Является ли оператор new/delete полиморфным в C++?C++

Программы на C++. Форум разработчиков
Anonymous
Является ли оператор new/delete полиморфным в C++?

Сообщение Anonymous »

Предположим, у меня есть следующий код

Код: Выделить всё

// X.h

class X{
void* operator new(std::size_t size);
void operator delete(void* ptr);
}

class ArenaAllocatedX {
void* operator new(std::size_t size);
void operator delete(void* ptr);
}

// main.cpp
void main() {
X* x1 = new X();
delete x1;

X* x2 = new ArenaAllocatedX ();
delete x2;

}
Использование GCC 10.3.1, вызывает операторы нового и удаления класса X, а x2 вызывает класс ArenaAllocatedX, возникает вопрос: является ли это гарантированным поведением? Как замена оператора памяти взаимодействует с наследованием?
Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/786 ... rphic-in-c

Вернуться в «C++»