Il semble que les deux peuvent être surchargés, mais quelqu'un a dit non ...opérateur nouveau et nouvel opérateur, qui ne peut pas être surchargé?
Quel est le cas?
Il semble que les deux peuvent être surchargés, mais quelqu'un a dit non ...opérateur nouveau et nouvel opérateur, qui ne peut pas être surchargé?
Quel est le cas?
Il semble que vous fassiez la distinction entre la gestion des nouvelles expressions et les fonctions d'allocation. Les nouvelles-expressions appellent les constructeurs en plus des types de classe et sont chargées de rechercher les fonctions d'allocation (donc elles sont intégrées dans le compilateur) et de les appeler. Vous ne pouvez pas changer ce comportement. Ce que vous pouvez changer est le comportement des fonctions d'allocation. Leur nom est operator new
et ils sont trouvés et utilisés par de nouvelles expressions pour allouer de la mémoire.
Vous pouvez surcharger l'opérateur new
mais vous ne pouvez pas définir de nouveaux opérateurs (par exemple ^
ou ++
).
Si ce n'est pas ce que vous vouliez dire, veuillez clarifier.
Vous pouvez surcharger les quatre, new
, new[]
, delete
et delete[]
. Voir la section 13.5 de the standard.
c'est un dupe: http://stackoverflow.com/questions/1885849/difference-between-new-operator-and-operator-new –