問題1。任何人都可以告訴我以下程序的輸出以及它的工作原理嗎?重載Opertor新?
#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;在這種情況下會發生什麼?
問題3。新運算符自動調用構造函數,所以在重載新運算符的時候,我可以如何調用構造函數?
Ques4。是否有必要重載這兩個類中的新操作符和刪除操作符?
首先發布實際編譯的代碼。 – user657267
這甚至不是可編譯的代碼。 –
我投票結束這個問題作爲題外話,因爲這是關於實際編程問題。面試問題不是實際的編程問題。 – IInspectable