e sera automatiquement détruit si on sort de la paire d'accolade. Il n'y a plus aucune raison d'utiliser delete, et on va éliminer quasiment tout les leaks avec ça. Existe aussi en version avec transfert de propriété (unique_ptr, pour remplacer auto_ptr) et en version avec un compteur de référence (shared_ptr)
Et après vous comprendrez pourquoi les C++eux vous disent qu'ils n'ont pas besoin de GC.
Initialisation de membres dans une classe
classA{inti=42;};
i prendra comme valeur 42 par défaut, sauf si redéfini par un constructeur.
Utilisation de classes locales comme classe template :
Avant, ce code pouvait impliquer une copie du vecteur. Maintenant, ça n'est qu'une affectation de pointeur. En gros, il y a un constructeur A::A(A&& old) et un opérateur d'affectation A& A::operator=(A&& old) qui peut être utilisé quand on sait que "old" va être prochainement détruit.
Le constructeur par défaut sera synthétisé automatiquement (ça fera une erreur si ça échoue, pas comme avant) et sans avoir à le faire à la main si on en défini un autre.
La construction par copie est supprimée (elle est automatique sinon) tout comme la construction par déplacement.
[^] # Re: templates variadiques
Posté par Batchyx . En réponse à la dépêche Le standard C++0x a enfin été voté. Évalué à 10.
Si tu veux parler de nouvelles fonctionnalités, alors parlons en de mes préférées :
Pointeurs intelligents (ceux de Boost).
e sera automatiquement détruit si on sort de la paire d'accolade. Il n'y a plus aucune raison d'utiliser delete, et on va éliminer quasiment tout les leaks avec ça. Existe aussi en version avec transfert de propriété (unique_ptr, pour remplacer auto_ptr) et en version avec un compteur de référence (shared_ptr)
Et après vous comprendrez pourquoi les C++eux vous disent qu'ils n'ont pas besoin de GC.
Initialisation de membres dans une classe
i prendra comme valeur 42 par défaut, sauf si redéfini par un constructeur.
Utilisation de classes locales comme classe template :
Move semantics :
Avant, ce code pouvait impliquer une copie du vecteur. Maintenant, ça n'est qu'une affectation de pointeur. En gros, il y a un constructeur A::A(A&& old) et un opérateur d'affectation A& A::operator=(A&& old) qui peut être utilisé quand on sait que "old" va être prochainement détruit.
Suppressions et définitions par défaut :
Le constructeur par défaut sera synthétisé automatiquement (ça fera une erreur si ça échoue, pas comme avant) et sans avoir à le faire à la main si on en défini un autre.
La construction par copie est supprimée (elle est automatique sinon) tout comme la construction par déplacement.