1.默认构造函数
没有参数的构造函数
2.合成的默认构造函数
如果我们没有定义任何构造函数, 只有在必要的时候 ,编译器才会为我们自动定义一个默认构造函数,我们称该函数为" 合成的默认构造函数".
3.编译器在哪些必要情况下帮我们合成默认构造函数?
case1. 该类没有任何构造函数,但其包含一个类类型的成员变量,而该成员变量所属的类有一个默认构造函数.
如下代码中, B类没有任何构造函数,但其包含A类类型的成员变量a,且A类有一个默认构造函数,这时编译器会为B类自动合成一个默认构造函数,生成目的是为了调用A的默认构造函数
#include <iostream>
using namespace std;
class A
{
public:
//A的默认构造函数
A()
{
cout << "调用A的默认构造函数!" << endl;
}
};
//B没有任何默认构造函数
class B
{
public:
A a; //类类型的成员变量
};
int main()
{
B b; //打印"调用A的默认构造函数!"
}
#include <iostream>
using namespace std;
class A
{
public:
//A的默认构造函数
A()
{
cout << "调用A的默认构造函数!" << endl;
}
};
class C
{
public:
//C的默认构造函数
C()
{
cout << "调用C的默认构造函数!" << endl;
}
};
//B没有任何默认构造函数
class B
{
public:
A a; //类类型的成员变量
C c; //类类型的成员变量
};
int main()
{
B b; //打印结果:"调用A的默认构造函数!" "调用C的默认构造函数!"
}