前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++构造函数语义(合成默认构造函数)

C++构造函数语义(合成默认构造函数)

作者头像
Ch_Zaqdt
发布2020-03-09 13:30:33
1.3K0
发布2020-03-09 13:30:33
举报
文章被收录于专栏:Zaqdt_ACM

       在初学C++的时候,对于一个对象来说,如果我们没有去定义其默认构造函数,那么编译器就会为我们自动生成一个默认构造函数。但其实是不准确的,具体来说是编译器会在必要的时候来生成一个默认构造函数,那么这个编译器生成的默认构造函数称为合成默认构造函数。那么在以下四种情况中编译器才会生成一个合成默认构造函数:

代码语言:javascript
复制
1. 含有类对象数据成员,该类对象类型有默认构造函数。

2. 基类带有默认构造函数的派生类。

3. 带有虚函数的类 

4. 带有虚基类的类

1. 含有类对象数据成员,该类对象类型有默认构造函数。

       在一个类中没有任何构造函数,但是包含了一个其他类的对象成员,并且该对象成员有默认构造函数,此时编译器就会为该类生成一个合成默认构造函数,用来调用对象成员的默认构造函数。

2. 基类带有默认构造函数的派生类。

       是指当一个基类包含一个默认构造函数,但是派生类没有任何构造函数时,编译器会生成一个合成构造函数,作用是调用基类的默认构造函数。

3. 带有虚函数的类。

       是指如果一个类还有虚函数,但是没有任何的构造函数时,编译器就会生成一个合成默认构造函数,作用是生成一个基于该类的虚函数表,并把类的虚函数表地址赋值给类对象的虚函数表指针。此外,如果自己定义了默认构造函数,那么编译器也会根据需要来扩充默认构造函数,目的就是上述所说的,调用父类的默认构造函数或者给对象的虚函数表指针赋值。

4. 带有虚基类的类

       是指如果一个类带有虚基类,编译器会为它生成一个合成默认构造函数。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/03/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 含有类对象数据成员,该类对象类型有默认构造函数。
  • 2. 基类带有默认构造函数的派生类。
  • 3. 带有虚函数的类。
  • 4. 带有虚基类的类
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档