Ques1. Может ли кто-нибудь сказать мне результат следующей программы и как ее работа?Перегрузка Opertor new?
#include <iostream>
#include <malloc.h>
#include <vector>
using namespace std;
class Base
{
public:
void* operator new(size_t size)
{
void *storage = malloc(size);
if(NULL == storage) {
throw "allocation fail : no free memory";
}
cout << "size " << size << endl;
return storage;
cout << "delete\n";
}
void operator delete(void* p)
{
cout << "delete\n";
free(p);
}
private:
int m_data;
};
class Derived : public Base
{
private:
int m_derived_data;
vector<int> z, y, x, w;
};
int main()
{
Base* b = new Base;
delete b;
Derived* d = new Derived;
delete d;
return 0;
}
Ques2. Если я напишу Base * bp = new Derived; Что будет в этом случае?
Ques3. Новый оператор вызывает конструктор автоматически, поэтому, перегружая новый оператор, как я могу вызвать конструктор?
Ques4. необходимо перегрузить новый и удалить оператор в обоих классах?
Публикация кода, который фактически компилируется. – user657267
Это даже не компилируемый код. –
Я голосую, чтобы закрыть этот вопрос как не по теме, потому что SO - это проблемы практического программирования. Вопросы интервью - это не практические проблемы программирования. – IInspectable