【有书共读】深度探索c++对象模型


第二章 构造函数语意学
default constructor 在编译器需要的时候被合成,对于class X,如果没有任何的user-declared constructor 那么default constructor被隐式的声明出来。如果一个class没有任何的constructor ,但它内含一个member object,而后者有default constructor,那么这个class的implicit default constructor就是“nontrivial”,编译器需要为该class合成一个default constrctor。不过该合成操作只有在 constructor真正需要被调用时才会发生。
带有default constructor的Base Class
类似道理,如果一个没有任何constructor的class派生一个带有default constrctor的base class,那么这个derived class的default consturctor会被视为nontrivial,并因此需要被合成出来。它将调用上一层base class 的default constructor 。对一个后继派生的class而言,这个合成的constructor和一个“被显示提供的default constructor没有什么差异”
带有一个virtual function 的class
这两种情况也需要合成default constructor 。
1 class声明(或者继承)一个virtual function
2 class 派生自一个继承串链,其中有一个或更多的virtual classes
copy constructor的构造操作成员们的初始化队伍

#C++工程师#
全部评论

相关推荐

05-03 12:45
西南大学 Java
nsnzkv:你这项目写的内容太多了,说实话都是在给自己挖坑,就算简历过了,后面面试也难受
点赞 评论 收藏
分享
Ncsbbss:又想干活又想要工资,怎么什么好事都让你占了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务