默认构造函数在这篇博客中已经写得很明白。
https://blog.csdn.net/bear_n/article/details/72798301
文章目录
- 1.什么是默认构造函数?
- 2.什么情况会自动生成默认构造函数,即编译器生成默认构造函数?
1.什么是默认构造函数?
默认构造函数是可以不用实参进行调用的构造函数,它包括了以下两种情况:
没有带明显形参的构造函数。
提供了默认实参的构造函数。
类设计者可以自己写一个默认构造函数。
编译器帮我们写的默认构造函数,称为“合成的默认构造函数”。
2.什么情况会自动生成默认构造函数,即编译器生成默认构造函数?
-
带有默认构造函数的类成员对象,如果一个类没有任何构造函数,但它含有一个成员对象,而后者有默认构造函数,那么编译器就为该类合成出一个默认构造函数。不过这个合成操作只有在构造函数真正被需要的时候才会发生;如果一个类A含有多个成员类对象的话,那么类A的每一个构造函数必须调用每一个成员对象的默认构造函数而且必须按照类对象在类A中的声明顺序进行;
-
带有默认构造函数的基类,如果一个没有任务构造函数的派生类派生自一个带有默认构造函数基类,那么该派生类会合成一个构造函数调用上一层基类的默认构造函数;
-
带有一个虚函数的类
-
带有一个虚基类的类