类和对象(5)--《Hello C++ Wrold!》(7)--(C/C++)--构造函数的初始化列表,explicit关键词,友元,内部类和匿名对象

06-02 1107阅读

文章目录

  • 构造函数的初始化列表
  • explicit关键字
  • static成员
  • 友元
    • 友元函数
    • 友元类
    • 内部类
    • 匿名对象
    • 编译器对连续构造的优化
    • 作业部分:

      构造函数的初始化列表

      初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。

      (初始化列表是构造函数的一部分)

      添加位置:在构造函数的{}前面

      Date(int year, int month, int day)
       : _year(year)
       , _month(month)
       , _day(day)
      {}
      

      只要调用了构造函数,都会走一次初始化列表,没有的话,就走隐式初始化列表

      隐式初始化列表的规则:

      对于内置类型,高级的编译器会初始化其为默认值(比如int的搞成0)

      对于类类型(即对象成员):

      如果该类型有默认构造函数,则会调用默认构造函数;如果没有默认构造函数且未显式初始化,则编译错误。

      注意:每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次)

      类中包含以下成员,必须放在初始化列表位置进行初始化:(成员是private时)

      1.引用成员变量

      2.const成员变量

      (因为引用成员变量和const成员变量的特征是必须在定义时初始化)

      3.自定义类型成员(且该类没有默认构造函数时)

      (引申:自定义类型没有放入初始化列表的话,会先调用默认构造函数再去类的构造函数里面)

      当然,初始化列表里也可以写其他的成员变量,比如内置类型,这些一般也建议写到初始化列表里面,很少,比如:赋值不单纯,有检验啥的才在函数内容里搞

      初始化列表  声明那里搞缺省值  构造函数里面赋值的优先级:
      初始化列表会搞的话,缺省值用不上;再进去函数里面
      初始化列表搞不上的话,用缺省值,再进去函数里面
      

      提议:

      建议变量声明的顺序和初始化列表的顺序保持一致

      因为:成员变量在类中声明次序就是其在初始化列表中的初始化顺序,与其在初始化列表中的先后次序无关

      class A
      {
      public:
       A(int a)
       :_a1(a)
       ,_a2(_a1)
       {}
       
       void Print() {
       cout
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码