Pourquoi ces deux scénarios (l'initialisation de A et de C) produisent-ils différents résultats d'initialisation par défaut dans C++ 14? Je ne comprends pas le résultat sur la base des règles d'initialisation par défaut dans cppreference.comTypes d'initialisation par défaut 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;
}
Sortie:
(Scenario 1)
0
-1771317376
-1771317376
0
--------------------
(Scenario 2)
0
0
0
0
Le poste qui tente d'expliquer cela (mais ce n'est pas clair pour moi encore pourquoi la différence dans les résultats et ce qui provoque l'initialisation de m dans chaque scénario): Default, value and zero initialization mess
Pourriez-vous fournir la page cppreference.com à laquelle vous faites référence? –
votre nom est si confus – bolov
@JohnathanGross J'ai mis à jour le message original avec un lien vers un article qui cite les parties pertinentes de cppreference – darkThoughts