Me und ein Kollege von mir hatte eine Debatte über obWeird-C++ Konstruktor kopieren, ohne Standardkonstruktors
Pt pt;
und
Pt pt = Pt();
gleichwertig sind. Ich vermutete, dass im zweiten Fall Kopierauftrag aufgerufen werden konnte, aber wie sich herausstellt, ist dies nicht der Fall.
Wie wir unser kleines Experiment lief habe ich beschlossen, eine seltsame Bit zu testen, dass mein Kollege dachte würde kompilieren nicht einmal:
//here the compiler calls a copy constructor and doesn't call the default constructor prior to that
// O_o
Pt pt = pt;
Hier ist eine Arbeitsprobe: http://ideone.com/XmJSz7
Also, die Frage ist - was in geht weiter:
Pt pt = pt;
"* Ich vermutete, dass im zweiten Fall Kopie Zuordnung aufgerufen werden könnte, aber wie sich herausstellt, ist es nicht der Fall. *" Ich vermute, Sie schließen aus der Tatsache, dass etwas nicht geschehen ist, dass es nicht passieren konnte. Dies ist eine ungültige Begründung. Wenn ich über die Straße gehe, ohne in beide Richtungen zu schauen, und nicht von einem Auto angefahren werde, heißt das, dass jemand, der gesagt hat, ich hätte von einem Auto angefahren werden können, falsch war? –
Gültiger Punkt. Schlagen Sie vor, dass Pt pt = Pt(); könnte in einigen Fällen Kopierkonstruktor aufrufen? Wenn ja - könnten Sie ein Beispiel geben? –
@Vorren - über diese 'Pt pt = Pt()', aktualisierte ich meine Antwort. –