之前一直以为
class A
{
public:
int a;
}
A a;
A a;编译器会自动调用默认构造函数,然后里面的成员函数会进行默认初始化,但这是声明不是定义,编译器只会给你默认生成个构造函数,并不会主动调用它,你还是得显式的调用默认构造函数,分配存储空间,编译器才会执行默认初始化。
A a=A(); //会执行默认初始化
之前一直以为
class A
{
public:
int a;
}
A a;
A a;编译器会自动调用默认构造函数,然后里面的成员函数会进行默认初始化,但这是声明不是定义,编译器只会给你默认生成个构造函数,并不会主动调用它,你还是得显式的调用默认构造函数,分配存储空间,编译器才会执行默认初始化。
A a=A(); //会执行默认初始化