Не Перегрузка , но Замена новым глобально действительно возможно.
Стандарт C ++ имеет набор предопределенных операторов new и delete. Наиболее часто используемые версии:
void* operator new(std::size_t) throw(std::bad_alloc);
void operator delete(void*) throw();
void* operator new[](std::size_t) throw(std::bad_alloc);
void operator delete[](void*) throw();
Первые две версии выделяют и освобождают память для объекта, последние две - для массива объектов.
Если вы предоставляете собственные версии, они называются и заменяют версии из стандартной библиотеки.
Если вы перегрузите оператор new
, вы всегда должны также перегрузить соответствующий оператор delete
, даже если он никогда не вызывается и не используется вами.