Surcharge de l'opérateur new
Remonter à Opérateurs new et delete - Index
Les opérateurs globaux ::operator new() et ::operator new[]() peuvent être surchargés. Chaque instance surchargée doit avoir une signature unique. C'est pourquoi plusieurs instances d'un opérateur global d'allocation peuvent coexister dans un programme.
Les opérateurs d'allocation de mémoire non spécifique aux classes peuvent également être surchargés. L'opérateur new peut être implémenté pour fournir d'autres routines de gestion de la mémoire de stockage libre (tas) ou pour accepter des arguments supplémentaires. L'opérateur new défini par le programmeur doit renvoyer void* et doit avoir size_t pour premier argument. Pour surcharger des opérateurs new, utilisez les prototypes suivants :
- void * operator new(size_t Type_size); // Pour non-tableaux
- void * operator new[](size_t Type_size); // Pour tableaux
Le compilateur fournit Type_size à l'opérateur new. Tous les types de données peuvent être remplacés par Type_size, sauf : les noms de fonctions (bien qu'un pointeur de fonction soit accepté), déclarations de classes, déclarations d'énumérations, const et volatile.