C++ 中关于“禁止使用数据成员初始值设定”的探讨
在 C++ 中,我们可以使用数据成员初始值设定来初始化类的数据成员。例如:
class Example {
public:
int num = 0;
std::string str = "default";
};
上述代码中,我们使用 num = 0
和 str = "default"
来分别初始化 Example
类的 num
和 str
两个数据成员。
然而,在某些情况下,C++ 标准不允许我们使用数据成员初始值设定来初始化数据成员。例如:
class Example {
public:
int num;
Example(int n): num(n) {}
};
在上述代码中,我们通过构造函数 Example(int n)
来初始化 num
数据成员的值。由于 num
已经有了初值,因此在数据成员初始值设定中给 num
赋初值是无用的,甚至是禁止的。这种情况下,如果使用数据成员初始值设定来初始化 num
,编译器会报错。
下面是一个具体的例子:
class Example {
public:
int num;
Example(int n): num(n) {}
Example(): num(0