Discussion: X x = X(...);
Afficher un message
Vieux 26/03/2008, 22h31   #1
Alain Ketterlin
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut 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;
}
  Réponse avec citation
 
Page generated in 0,04586 seconds with 9 queries