在《C++中类的合成的默认构造函数2-1》中提到,当类没有定义默认构造函数时,C++编译器为该类自动生成一个合成的默认构造函数。当使用合成默认构造函数时,需要注意以下几个事项。
1 编译器生成默认构造函数的前提
只有当类没有声明任何构造函数时,C++编译器才会自动地生成默认构造函数。也就是说,一旦类定义了其他格式的构造函数,C++编译器不会为其生成默认构造函数。
struct MyStruct
{
int i;
MyStruct(int a) {
a = i;
}
};
其中,MyStruct类定义了一个带有参数的构造函数,此时C++不再为MyStruct类生成合成默认的构造函数。因此,
MyStruct sd1;
以上代码会报错,其报错信息为“error C2512: “MyStruct”: 没有合适的默认构造函数可用”。因此此时应该调用MyStruct类的默认构造函数,但是该类没有定义默认构造函数,而C++也不再为MyStruct类生成合成默认的构造函数,所以
订阅专栏 解锁全文
424

被折叠的 条评论
为什么被折叠?



