-
当你使用静态分配的数组,而数组元素类型是某个类的对象时,就要调用默认的构造函数,比如下面的代码。
Object buffer[10]; // call default constructor -
当你使用动态分配的数组,而数组元素类型是某个类的对象时,就要调用默认的构造函数,比如下面的代码,如果Object没有默认的构造函数,是无法通过编译的,因为new操作符要调用Object类的无参构造函数类初始化每个数组元素。
Object* buffer = new Object[10]; -
当你使用标准库的容器时,如果容器内的元素类型是某个类的对象时,那么这个类就需要默认的构造函数,原因同上。
vector buffer; -
一个类A以另外某个类B的对象为成员时,如果A提供了无参构造函数,而B未提供,那么A则无法使用自己的无参构造函数。
下面代码会编译不过。
class B
{
B(int i){}
};
class A
{
A(){}
B b;
};
int main(void)
{
A a(); // error C2512: 'B' : no appropriate default constructor available
getchar() ;
return 0 ;
}
原文:https://www.cnblogs.com/graphics/archive/2012/10/02/2710340.html