谈什么情况下C++编译器会自动生成default constructor

最近读到Lippman的《深度探索C++对象模型》,对类的知识又复习了一遍。这次就先写个default constructor吧。

对于C++新手来说,一个常见的误区是:如果一个class没有定义任何的constructor,那么编译器将会生成一个default constructor。然而,事实并不总是如此,下面就列举编译器会自动合成default constructor的情况:
“当编译器需要default constructor的时候,它才会自动合成一个”
1、“带有default constructor”的member class object;
2、“带有default constructor”的base class;
3、“带有一个virtual function”的class;
4、“带有一个virtual base class”的class;

下面一一介绍它们:
情形1、“带有default constructor”的member class object:即一个classA包含了一个对象成员objectB,而这个对象成员定义了(classB的)default constructor,那么编译器会为classA合成一个default constructor。请看如下代码:
class B{B(){};…};
class A{ public: B b; //对象成员};

int main (){
A a; //对象b需要在此时初始化。
…}
在classA中包含的对象成员b必须在对象a创建时初始化࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值