【有书共读】深度探索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++工程师#
全部评论

相关推荐

09-09 09:17
已编辑
东华理工大学 Java
点赞 评论 收藏
分享
09-22 09:42
门头沟学院 Java
牛客37185681...:马德,我感觉这是我面过最恶心的公司,一面是两个女hr,说什么实习前几个月属于试用期,试用期过了才能转成正式实习生,我***笑了,问待遇就是不说,问能不能接受全栈,沙币公司
如果可以选,你最想去哪家...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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