繁体   English   中英

成员初始化列表是否没有定义值? [复制]

[英]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)

作为非类类型intx被零初始化为0

  1. 否则,对象是零初始化的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM