【发布时间】:2017-12-30 14:27:05
【问题描述】:
为什么这两种情况( A 和 C 的初始化)在 C++ 14 中会产生不同的默认初始化结果? 根据 cppreference.com 中的默认初始化规则,我无法理解结果
struct A { int m; };
struct C { C() : m(){}; int m; };
int main() {
A *a, *d;
A b;
A c{};
a=new A();
d=new A;
cout<<a->m<<endl;
cout<<d->m<<endl;
cout<<b.m<<endl;
cout<<c.m<<endl;
cout<<"--------------------"<<endl;
C *a1, *d1;
C b1;
C c1{};
a1=new C();
d1=new C;
cout<<a1->m<<endl;
cout<<d1->m<<endl;
cout<<b1.m<<endl;
cout<<c1.m<<endl;
}
输出:
(Scenario 1)
0
-1771317376
-1771317376
0
--------------------
(Scenario 2)
0
0
0
0
试图解释这一点的帖子(但我还不清楚为什么结果的差异以及导致 m 在每种情况下被初始化的原因):Default, value and zero initialization mess
【问题讨论】:
-
您能否提供您所引用的 cppreference.com 页面?
-
你的命名太混乱了
-
@JohnathanGross 我已经更新了原始帖子,其中包含一个帖子链接,该帖子引用了 cppreference 中的相关部分
-
a 和 c 是值初始化的示例(将所有内容归零)。 b 和 d 是默认初始化的示例,对于诸如 A 之类的普通可构造类型没有任何作用
标签: c++ initialization c++14 default-value