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
本文探讨了C++中数据成员初始值设定的使用情况,指出当数据成员已在构造函数中被初始化时,再通过数据成员初始值设定赋值是禁止的。举例说明了编译器对此的错误提示,并建议根据实际情况选择合适的方式初始化类的数据成员。
订阅专栏 解锁全文
412

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



