使用带有 default 关键字的 Initializer 列表
Usage of Initilizer list with default keyword
为什么我在初始化列表后不能使用default关键字
class classA
{
int num;
public:
classA():num(3) = default;
};
备选方案:
class classA
{
int num = 3;
public:
classA() = default;
};
= default
提供构造函数的定义。请注意,它不提供 body, 它提供 定义。 构造函数的定义包括 mem-initialiser-list 和 body。所以如果你想要自己的mem-initialiser-list,你必须自己提供完整的定义。
另请注意,这样做是零问题。只需写 {}
而不是 = default
。用 = default
定义的默认构造函数执行与用 {}
.
定义的完全相同的操作
它们之间的唯一区别是,在其声明中使用 = default
定义的构造函数不被视为 user-provided,因此允许 class 是一个微不足道的 class.但是由于您希望在构造函数中发生某些事情 non-trivial ,因此您可以通过使用 {}
.
得到您想要的东西
为什么我在初始化列表后不能使用default关键字
class classA
{
int num;
public:
classA():num(3) = default;
};
备选方案:
class classA
{
int num = 3;
public:
classA() = default;
};
= default
提供构造函数的定义。请注意,它不提供 body, 它提供 定义。 构造函数的定义包括 mem-initialiser-list 和 body。所以如果你想要自己的mem-initialiser-list,你必须自己提供完整的定义。
另请注意,这样做是零问题。只需写 {}
而不是 = default
。用 = default
定义的默认构造函数执行与用 {}
.
它们之间的唯一区别是,在其声明中使用 = default
定义的构造函数不被视为 user-provided,因此允许 class 是一个微不足道的 class.但是由于您希望在构造函数中发生某些事情 non-trivial ,因此您可以通过使用 {}
.