Opérateur new (C++)
Remonter à Opérateurs new et delete - Index
Par défaut, s'il n'existe pas de version surchargée de new, une demande d'allocation de mémoire dynamique utilise la version globale de new, ::operator new(). Une demande d'allocation pour les tableaux appelle ::operator new[](). Lorsqu'il est utilisé avec des objets classes de type name, vous pouvez définir un opérateur spécifique name::operator new() ou name::operator new[](). Lorsque new est appliqué aux objets classe name, il appelle l'opérateur approprié name::operator new s'il est présent. Sinon, c'est l'opérateur global ::operator new qui est utilisé.
Seule la fonction operator new() autorise une valeur d'initialisation facultative. La version d'allocation de tableau, operator new[](), n'accepte pas de valeurs d'initialisation. En l'absence de valeurs explicites, l'objet créé par new contient des données non prévisibles. L'objet alloué par new, lorsqu'il ne s'agit pas d'un tableau, peut être initialisé à l'aide d'une expression entre parenthèses :
int_ptr = new int(3);
Les tableaux de classes avec constructeurs sont initialisés avec le constructeur par défaut (voir plus loin dans ce même chapitre). L'opérateur new défini par le programmeur avec une initialisation personnalisée joue un rôle important, au niveau des constructeurs C++, pour les objets de type classe.