1.类和对象
A(基类):含有缺省的构造函数
B(派生类):没有显式定义任何构造函数,B中包含了A类的对象
此种情况下,编译器会给B类合成默认的构造函数(在B类构造函数初始化列表位置调用A类的缺省构造函数)
2.继承
A(基类):有缺省的构造函数
B(派生类)public公有继承A:没有显式定义任何构造函数
编译器会给B类合成默认构造函数(在B类构造函数初始化列表位置)
合成的默认构造函数只做一件事:就是调用A类的缺省构造函数,从而构造A类对象)
3.虚拟继承
A:普通的类
B: class B:virtual public A--->编译器会给B合成默认的构造函数
4.如果一个类中包含虚函数,那编译器会给此类合成构造函数
那此类的对象会多4个字节,在对象的前4个字节位置
具体可参考上一篇博客:http://blog.youkuaiyun.com/dangzhangjing97/article/details/78567275
本文详细解析了C++中当派生类未定义构造函数时,编译器如何为派生类合成默认构造函数的过程。包括不同继承方式下(如普通继承与虚继承)的构造函数合成规则,并解释了含有虚函数的类对象额外占用空间的原因。
260

被折叠的 条评论
为什么被折叠?



