Ich habe das Problem, dass mein Klassen-Destruktor aufgerufen wird, wenn die Klasse erstellt wird. Betrachten Sie das folgende Testprogramm:
%Vor%Die Ausgabe (vor der Schleife) ist
%Vor%Ich verstehe das Verhalten des obigen Snippets nicht:
Der Prototyp von std::vector::resize()
ist:
Er erstellt also einen temporären Standardwert, der in den Vektor eingefügt werden soll (Ihr Konstruktoraufruf), dann wird er 10-mal in den Vektor kopiert (Sie protokollieren diese nicht), und dann wird das Temporäre zerstört (Ihr Destruktor) Ruf).
Beachten Sie, dass sich die Dinge für C ++ 11 geändert haben. Jetzt gibt es zwei Überladungen:
%Vor%Wenn Sie also einen geeigneten C ++ 11-Compiler verwenden, rufen Sie die erste Überladung auf, und Ihre Werte werden value-initialisiert, dh sie verwenden den Standardkonstruktor.
Tags und Links c++ inheritance constructor destructor