De ma compréhension des déclarations et des définitions, à la portée mondiale:Comment faire pour définir et déclarer une variable en utilisant le constructeur par défaut en C++?
MyClass instance();//Declares a function that returns a MyClass
MyClass instance;//Declares an instance of MyClass
Est-il possible de déclarer une variable et définir d'utiliser le constructeur par défaut à périmètre global? Et si j'utilisais une structure au lieu d'une classe?
EDIT:
Bon, alors MyClass instance;
n'appelle le constructeur par défaut. Quelqu'un peut-il expliquer comment cela est compatible avec this example:
int a; // not default constructed, will have random data
int b = int(); // will be initialised to zero
Pourquoi cela se comporte-t-il différemment de comment 'i nt' fonctionne (voir modifier ci-dessus)? – Casebash
@Casebash - 'int' est un type POD, qui sera initialisé à zéro ou non initialisé selon la façon dont il est déclaré. Lorsque vous déclarez un 'int' localement sur la pile et ne l'initialisez pas explicitement, il aura des données aléatoires comme vous l'avez indiqué. S'il vous plaît voir cette réponse pour plus de détails: http: // stackoverflow.com/questions/3102096/when-do-c-pod-types-get-zero-initialisé/3102134 # 3102134 – LeopardSkinPillBoxHat
Supposons que 'MyStruct' est défini comme' struct MyStruct {int a;}; '. La réponse à laquelle vous avez lié semble impliquer que 'MyStruct' n'est pas initialisé par défaut s'il est déclaré dans la portée locale (il est dit que myInstance.a n'est pas défini). Le constructeur par défaut pour une structure appelle les constructeurs par défaut pour chaque élément de la structure, n'est-ce pas? – Casebash