在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
类对象的初始化顺序 新对象的生成经历初始化阶段(初始化列表显式或者隐式的完成<这部分有点像java里面的初始化块>)——> 构造函数体赋值两个阶段 1,类对象初始化的顺序(对于没有父类的成员) 1)初始化阶段:该对象的类成员变量,const成员变量,引用成员变量进行显示初始化(由初始化列表决定),如果没有显式初始化,则进行隐式初始化(对于类成员,调用其默认构造函数)。因此对于没有默认构造函数的类成员变量、const成员变量,引用成员变量必须在初始化列表中进行显式初始化;对于内置变量或者复合类型的成员,如果对象再全局作用域,则进行初始化;如果在局部作用域,不进行初始化 2)调用构造函数赋值:略 2,对于含有父类的子类对象初始化 1)调用基类的构造函数 2)初始化阶段:子类对象的类成员变量,const成员变量,引用成员变量进行显示初始化(由初始化列表决定),如果没有显式初始化,则进行隐式初始化(对于类成员,调用其默认构造函数)。因此对于没有默认构造函数的类成员变量、const成员变量,引用成员变量必须在初始化列表中进行显式初始化。对于内置变量或者复合类型的成员,如果对象再全局作用域,则进行初始化;如果在局部作用域,不进行初始化 3)调用自身的构造函数 析构函数的调用顺序总是和构造函数相反,调用了多少次构造函数(包括复制构造函数),就需要调用多少次析构函数。注意复制构造函数在下列场合执行: 复制构造函数 1)根据同类型的对象初始化另一个对象(和赋值运算符的区别在于是否产生新对象) 2)蒋对象作为实参,传递给一个函数,或者从函数返回时复制一个对象 3)初始化容器或者数组元素(这个是在特定规则下,具体细节可以翻书)
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论