第二章 构造函数

Default Constructor的构造操作:

  什么时候才会合成一个default Construct,当编译器需要它的时候,此外,被合成出来的Construct只执行编译器所需要的行动。

  Nontivial default constructor4种情况:

  1.带有Default ConstructorMember Class Object

  编译器如何避免合成多个default Constructor inline方式完成。一个inline函数有静态链接,不会被文件以外者看到,如果太复杂就会合成一个explicit non-inline static实例。

编译器会扩张Constructoruser code被执行之前,先调用必要的default Constructor,Members声明的顺序调用。

  2.带有Default ConstructorBase Class

  3.带有一个virtual functionclass:

   Class声明一个virtual function,

   Class 派生一个继承串链,其中一个或更多的virtual base classes

 

  在合成的default Constructor中,只有base class subobjectsMembers class objects会被初始化。所有其他的nonstatic data member都不会被初始化。如果程序员需要把某个指针设为0default Constructor,那么提供它的应该是程序员。

  Copy Constructor4个条件和上面内似。

  深拷贝与浅拷贝:关于动态内存时注意定义。

Default Memberwise Initialization

class obeject以相同class的另一个object作为初值,其内部是以所谓的Default Memberwise Initialization手法完成的,也就是把每一个内建的或派生的data member的值,从某个Object拷贝一份到另一个Object身上。不过它并不拷贝其中的Members class object,而是以递归的方式实行。

Bitwise Copy Semantics(浅拷贝)

NRV 

List中的项目顺序是由class中的Members声明决定的,不是由list中排序决定的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值