C ++: Если я перегружаю новый оператор, должен ли я тоже перегружать оператор удаления? - PullRequest
0 голосов
/ 04 сентября 2018

Я читал вопрос о SO, и в одном из ответов он упоминался как:

Если не может быть найдена однозначная совпадающая функция освобождения, распространение исключения не приводит к тому, что память объекта освобождена.

Итак, если я просто перегружу свой оператор new, а не оператор delete, будет создан и вызван любой оператор delete по умолчанию; или я должен также написать оператор delete явно.

1 Ответ

0 голосов
/ 04 сентября 2018

Это означает, что если вы перегрузите оператор new с дополнительными аргументами, а не соответствующее удаление с дополнительными аргументами, если в конструкторе возникнет исключение, оператор удаления не будет вызван. С другой стороны, если вы перегружаете базовый новый (без дополнительных аргументов) и возникает исключение, будет вызвано удаление без дополнительного аргумента, и это будет оператор удаления по умолчанию, если вы его не перегружали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...