zoukankan      html  css  js  c++  java
  • 构造函数

    构造函数初始化式

    构造函数分为初始化阶段、普通计算阶段,计算阶段由构造函数体中所有语句组成,初始化阶段发生在计算阶段之前

    初始化阶段

    // 构造函数初始化列表,m_nAge用参数nAge初始化,m_strName初始化为wangwu
    Teacher::Teacher(const int nAge):m_nAge(nAge),m_strName("wangwu")
    {}
    

    如果没有给类成员提供初始化式,默认调用类成员默认构造函数,成员类没有默认构造会报错
    初始化const数据成员和引用类型数据成员必须在初始化式中

    总结

    必须对没有构造函数或者const数据成员和引用类型数据成员使用初始化式
    效率方面:没有初始化式的成员调用默认构造,计算阶段还要对它初始化和赋值

    初始化次序

    成员定义顺序,避免使用成员初始化成员

    class Teacher
    {
    public:
    int a;
    in b;
    
    Teacher(int c):a(c),b(c)
    {}
    }
    

    默认构造函数

    只有在类没有提供任何构造函数时,编译器才会提供默认构造函数
    用户只要定义了任何构造函数,编译器不再生成默认构造

    使用默认构造

    Teacher my();        //error 编译器解释为:函数声明,不接受任何参数返回Teacher类型对象
    

    禁止构造函数的隐式转换

    todo:explicit关键字

  • 相关阅读:
    Integer和Integer常量池
    Spring中常用的23中设计模式
    GitHub 简单教程
    IDEA 中用好 Lombok,撸码效率至少提升5倍!
    Intellij IDEA中Mybatis Mapper自动注入警告的6种解决方案
    ROS常用命令和VIM常用命令
    ROS运行
    VINS-Mono运行
    环境配置相关
    C89标准和C99标准C11标准的区别
  • 原文地址:https://www.cnblogs.com/xiongyungang/p/11355415.html
Copyright © 2011-2022 走看看