В примере, приведенном ниже, перегруженный оператор нового возвращается пустой указательКак работает перегруженный оператор new?
void* Myclass::operator new(size_t size)
{
void *storage = malloc(size);
if(NULL == storage) {
throw "allocation fail : no free memory";
}
return storage;
}
Но мое призвание, как этот MyClass *x = new MyClass;
.
Итак, вопрос в том, как новый оператор знает, какой тип указателя находится в левой части. быть типичным.
Вопрос 2: Что произойдет, если я напишу MyClass * ptr = new Derived() ;? необходимо перегрузить новый оператор как в производном, так и в базовом классе?
Оператор не должен знать, компилятор добавит дополнительный код для вызова конструктора класса и назначит указатель. –