X x = X(...);
Salut,
J'ai trouve récemment du code qui initialise les objets de la façon
suivante :
X x = X(...);
Je me suis dit, facile, c'est une initialisation de x par un
temporaire, avec appel du copy-ctor. Eh bien non. Y a pas de
copy-ctor. Si j'en définis un, il n'est pas appelé. Si je le définis
avec X(X &) (c'est-à-dire pas de const), j'ai une erreur de compil (ce
que je conçois avec un temporaire).
Bref : est-une syntaxe reconnue ? recommandée ? ou seulement une
fantaisie de g++ (4.1.3, au fait, avec -W -Wall) ? Y en a-t-il
d'autres comme ça ? Quel est l'intérêt (à part pouvoir mettre des
parenthèses) ?
Merci d'avance pour vos lumières.
-- Alain.
P/S: un bout de code pour ceux qui voudraient essayer :
#include <iostream>
using namespace std;
class X {
public:
X() {cout<<"Normal"<<endl;}
X(const X &) {cout<<"Cpy"<<endl;} // virer const pour voir
};
int main()
{
X x = X();
return 0;
}
|