在C++中约定如果一个类中自定义了带参数的构造函数,那么编译器就不会再自动生成默认构造函数。
show the code,下面这段代码会报错,因为定义了一个带参的构造函数,编译器就不会再自动生成无参默认构造函数。
#include <iostream>
class Test {
public:
int a;
Test(int data) { a = data; }
};
int main() {
Test t;
return 0;
}
如果多加个Test() = default;
就可以让让编译器继续生成这个默认构造函数。(这里的Test是我做测试的类名)
#include <iostream>
class Test {
public:
int a;
Test() = default;
Test(int data) { a = data; }
};
int main() {
Test t;
return 0;
}
编译通过。