Dies wird kompiliert.
gcc (GCC) 4.7.2 20120921 (Red Hat 4.7.2-2)
g++ -o main main.cpp -Wall -w -ansi
Ich erhalte keine Warnungen.
Warum scheint dies ein gültiges C ++ zu sein? Wird dies irgendwo im Standard erwähnt? Gibt es Warnhinweise, die dies für gcc melden können?
Wenn die Klasse über Mitgliedsdaten verfügt, werden die Daten zufällig übergeben.
Beispiel:
Ausgabe: -482728464
Was ist hier los? Wie kann ich mich selbst davon abhalten, dies versehentlich zu tun? - Ist es möglich, einen Compilerfehler zu machen?
(§ 3.3.2 / 1) Der Punkt der Deklaration für einen Namen ist unmittelbar nach seinem vollständigen Deklarator (Abschnitt 8) und vor seinem Initialisierer (falls vorhanden) , außer wie unten angegeben. [Beispiel:
%Vor%Hier wird das zweite x mit einem eigenen (unbestimmten) Wert initialisiert. -End-Beispiel]
Dies gilt auch für benutzerdefinierte Typen, z. B. Ihre class A
. Der verwendete Kopierkonstruktor ist der Standardwert, der vom Compiler automatisch generiert wird.
Tags und Links class c++ member copy-constructor