爲什麼這兩種方案(A和C的初始化)在C++ 14中產生不同的默認初始化結果? 基於在cppreference.com默認初始化規則我無法理解的結果C++默認初始化類型
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頁面? –
你的命名是如此令人困惑 – bolov
@JohnathanGross我已經更新了原帖,並附有引用cppreference – darkThoughts