Nach dem Lesen this article auf Herb Sutters Blog, experimentierte ich ein wenig und stieß auf etwas, das mich verwirrt. Ich verwende Visual C++ 2005, aber ich wäre überrascht, wenn dies von der Implementierung abhängig wäre.Const Referenz auf temporäre
Hier ist mein Code:
#include <iostream>
using namespace std;
struct Base {
//Base() {}
~Base() { cout << "~Base()" << endl; }
};
int main()
{
const Base & f = Base();
}
Sobald er ausgeführt wird, zeigt es "~Base()
" zweimal ... Aber wenn ich un-Kommentar den Konstruktor, zeigt er es nur einmal !
Hat jemand eine Erklärung dafür?
Erstaunliche Antwort, vielen Dank Sir :) – Drealmer
Interessant. Wird dies in einigen Fällen zum Objekt-Slicing führen? –
"C++ 1x wird das beheben." Oh Schatz, ist das, was sie den nächsten Standard nennen, oder ist das ein witziger Witz? – veefu