为什么初始化列表后不能使用default关键字
class classA
{
int num;
public:
classA():num(3) = default;
};
备选方案:
class classA
{
int num = 3;
public:
classA() = default;
};
= default
提供了构造函数的定义。注意,它没有提供主体,它提供了一个定义。构造函数的定义既包括初始化列表,也包括函数体。因此,如果你想要自己的mem- initializer -list,你必须自己提供整个定义。
还要注意,这样做没有任何问题。把= default
写成{}
。使用= default
定义的默认构造函数执行与使用{}
定义的构造函数完全相同的操作。
= default
定义的构造函数不被认为是用户提供的,因此允许类成为普通类。但是,由于您希望在构造函数中发生一些重要的事情,因此使用{}
可以得到您想要的结果。