
[英]Can a member variable access the value of a previously defined member variable in the same initialization list (C++)?
[英]Is a member initialization list without a value defined? [duplicate]
说我有:
class Foo
{
public:
int x;
Foo() : x() {}
}
在构造函数运行后读取x
是 UB 吗? 更具体地说,这是什么类型的初始化,零初始化,直接初始化还是默认初始化?
我知道如果我们有:
Foo() : x(42) {}
x
将被直接初始化为42
但我对上面的代码片段不太确定,如果结果是默认初始化,我不想被 UB 狼咬。
这是什么类型的初始化
x()
执行值初始化:
当非静态数据成员或基类使用带有一对空括号
or braces (since C++11)
的成员初始值设定项进行初始化时or braces (since C++11)
;
作为非类类型int
, x
被零初始化为0
。
- 否则,对象是零初始化的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.