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
|