c++建立对象时要调用无参构造函数的情况有哪些,记得老师说有[]的,还有啥忘了,求帮忙解释一下,谢谢了。
无参构造函数就是默认构造函数。
如果有一个类A,则以下情况调用无参的构造函数:
1.A a;
2.A *pa = new A();
编译器会为对象合成缺省构造函数(无参构造函数和全缺省都是缺省构造函数)的情况,就目前我知道的有三种:
1 类B中包含类A的子对象,类A有缺省构造函数的情况下,编译器会为类B合成
class A
{
public:
A()
{}
};
class B
{
private:
A a;
};
2 类B公有继承自类A,类A有缺省构造函数
class A
{
public:
A()
{}
};
class B :public A
{
private:
int b;
};
3 类中有虚函数时,会调用缺省构造函数,作用是生成虚表
class A
{
public:
virtual void fun1()
{
cout << "A::fun1()"<<endl;
}
};
class B :public A
{
public:
virtual void fun1()
{
cout << "B::fun1()" << endl;
}
};
创建对象没有参数就会调用该构造函数,没有参数的构造函数叫缺省构造函数
如果一个类没有提供构造函数,那么编译编译器会为你自动合成一个不带参数的构造函数,如果提供任何一个,编译器不再为你合成。