• 构造函数


    构造函数初始化式

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

    初始化阶段

    // 构造函数初始化列表,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关键字

  • 相关阅读:
    基于udp简单聊天的系统
    网络编程_tcp与dup协议简单应用
    logging_modules
    linux内核配置与编译
    linux内核简介
    对于国嵌上学期《一跃进入C大门》Mini2440的代码修正
    通过按键玩中断
    MMU功能解析、深入剖析、配置与使用
    C与汇编混合编程
    一跃进入C大门
  • 原文地址:https://www.cnblogs.com/xiongyungang/p/11355415.html
Copyright © 2020-2023  润新知