Est ce que ce bout de code génère une allocation ? - C++ - Programmation
Marsh Posté le 01-06-2010 à 16:36:30
Salut,
Qu'est-ce que tu appelles une allocation? Une allocation dynamique? Dans ce cas non (sauf s'il y en a une dans le constructeur de Toto).
Un objet Toto est construit dans mafonction. Une copie est retournée qui est ensuite copiée dans B (le compilateur supprime surement une des copies).
Tu peux utiliser un debugger pour mettre un breakpoint dans tes constructeurs (normal et par copie) pour vérifier tout cela.
Marsh Posté le 01-06-2010 à 17:39:15
il va certainement etre élidé par le principe de Named Return Value Optimization:
http://cpp-next.com/archive/2009/0 [...] -by-value/
Je parle bien evidemment des compilos corrects
Marsh Posté le 01-06-2010 à 18:33:51
Ok,
btw, par "compilo correct", tu veux dire "n'importe quel compilo sauf apple gcc 4.2"?
Marsh Posté le 01-06-2010 à 19:11:06
oui :€
en etant serieux, dans le lien que j'ai donné y a un petit ficheir qui compte les elisions. Donc recupére le et test sur gcc apple 4.crap
Marsh Posté le 01-06-2010 à 20:28:40
Sache que tu as été mauvaise langue, mon compilo n'en manque qu'une. Je pense que ca va me plaire cette affaire. Apres avoir passé des années à apprendre comment pense un compilateur pour éviter de lui faire faire des copies inutiles, maintenant, je vais devoir désapprendre parce qu'il a appris à réfléchir comme moi.
Marsh Posté le 01-06-2010 à 15:53:23
Salut à tous. J'ai une classe toto qui contient notamment un tableau et tout les trucs qui vont bien (Coplien, un opérateur [],etc...).
Je fais une fonction qui ressemble à ça :
si je l'appelle comme ça :
Est ce que "dest" va être alloué ou pas?
Message édité par snafu8 le 01-06-2010 à 16:00:04