référence Const temporaire
Question
Après avoir lu cet article sur le blog de Herb Sutter, j'expérimenta un peu et a couru dans quelque chose qui me déconcerte. J'utilise Visual C ++ 2005, mais je serais surpris si cela dépendait la mise en œuvre.
Voici mon code:
#include <iostream>
using namespace std;
struct Base {
//Base() {}
~Base() { cout << "~Base()" << endl; }
};
int main()
{
const Base & f = Base();
}
Lors de l'exécution, il affiche "~Base()
" deux fois ... Mais si je Décommentez le constructeur, il affiche seulement une fois
Quelqu'un at-il une explication?
La solution
Cela dépend la mise en œuvre.
La norme permet une copie de se produire lors de la liaison temporaire à une référence const. Dans votre cas, VC ++ effectue une copie uniquement lorsque le constructeur est implicitement défini. Cela est inattendu, mais autorisé.
C ++ 1x corrigera cette .
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow