Von meinem Verständnis von Erklärungen und Definitionen, auf globalen Rahmen:Wie mache ich definieren und deklarieren eine Variable mit dem Standardkonstruktor in C++?
MyClass instance();//Declares a function that returns a MyClass
MyClass instance;//Declares an instance of MyClass
Ist es möglich, eine Variable zu deklarieren und definieren den Standard-Konstruktor im globalen Bereich zu benutzen? Was wäre, wenn ich statt einer Klasse eine Struktur verwende?
EDIT:
Okay, so tut MyClass instance;
den Standard-Konstruktor aufrufen. Kann mir jemand erklären, wie dies mit this example konsistent ist:
int a; // not default constructed, will have random data
int b = int(); // will be initialised to zero
Warum verhält sich das anders als "i" nt' funktioniert (siehe Bearbeiten oben)? – Casebash
@Casebash - 'int' ist ein POD-Typ, der je nach Deklaration entweder initialisiert oder nicht initialisiert wird. Wenn Sie ein 'int' lokal auf dem Stack deklarieren und es nicht explizit initialisieren, wird es zufällige Daten haben, wie Sie angegeben haben. Weitere Informationen finden Sie in dieser Antwort: http: // stackoverflow.com/questions/3102096/when-do-c-pod-types-get-zero-initialisiert/3102134 # 3102134 – LeopardSkinPillBoxHat
Angenommen, "MyStruct" ist definiert als "struct MyStruct {int a;};". Die Antwort, die Sie verknüpft haben, scheint zu implizieren, dass "MyStruct" nicht standardmäßig initialisiert wird, wenn es im lokalen Gültigkeitsbereich deklariert ist (es besagt, dass myInstance.a nicht definiert ist). Der Standardkonstruktor für eine Struktur ruft die Standardkonstruktoren für jedes Element in der Struktur auf, oder? – Casebash