Discussion: X x = X(...);
Afficher un message
Vieux 27/03/2008, 09h42   #5
James Kanze
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: X x = X(...);

On Mar 26, 11:08 pm, Pascal Bourguignon <p...@informatimago.com>
wrote:
> Alain Ketterlin <al...@dpt-info.u-strasbg.fr> writes:
> > 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).


> PCQJES, c'est équivalent à : X x(...);


Pas tout à fait. C'est l'équivalent à :

X x( X( ... ) ) ;

Avec un droit spécial donné au compilateur de supprimer la copie
(comme c'est souvent le cas).

> > Bref : est-une syntaxe reconnue ?


> Oui.


> > recommandée ?


> Je l'aime bien. Je la recommenderais.


Comme Fabien, je préfère :

X x( ... ) ;

Si le type en question ne supporte pas la copie, de toute façon,
il n'y a pas le choix.

[...]

> SJMSB,


> > Y en a-t-il d'autres comme ça ?


> Tu parie! Il n'y a pas plus immonde que la syntaxe de C++, on
> y trouve toutes les horreurs imaginables.


C'est le prix qu'on paie d'avoid le C à la base.

Et en passant, c'est quoi PCQJES ? (« Pour ce que je », et puis
je seche.)

--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
  Réponse avec citation
 
Page generated in 0,05587 seconds with 9 queries