首页 > 代码库 > C++编译器合成默认构造函数的条件(合成默认拷贝构造函数雷同)
C++编译器合成默认构造函数的条件(合成默认拷贝构造函数雷同)
当用户没有为类定义构造函数的时候,编译器并不是为每个类合都成默认的构造函数,只是在编译器需要的时候才合成默认构造函数。编译器合成默认的构造函数只是满足编译器的编译的需要,而不是满足程序员的需要(例如,成员变量的初始化工作还需要程序员来定义构造函数)。
1、对象中包含带有默认构造函数的对象
class A{ public: A(); } class B{ public: A a; }在组合中B需要编译器合成默认的构造函数,来调用A的默认构造函数,来定义(并不帮助程序员初始化)B自己的成员变量,内置类型变量则不需要。
2、父类中带有默认构造函数
class A{ public: A(); } class B:public A { ... }在继承关系中,同合成,编译器需要为B合成默认的构造函数类调用A的默认构造函数。
3、带有虚函数的类
带有虚函数的类,编译器根据需要,合成一个存放虚函数指针的虚表。
4、虚继承的类
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。