new和delete函數的重載

#include <iostream>
using namespace std;
//new和delete的局部重載例子
class test{
public:
	test(){
		cout << "test constructor." << endl;
	}

	//返回的是void類型的指針
	void* operator new (size_t size){
		cout << "operator new" << endl;
		return malloc(size);
	}

	//傳入的是void類型的指針
	void operator delete (void *p){
		cout << "operator delete" << endl;
		free(p);
	}
	~test(){
		cout << "unconstructor test." << endl;
	}
};

//new 和delete運算符是要分別調用構造函數和析構函數的
void main(){
	test *t = new test();
	//先執行重載的new函數,然後執行構造函數
	delete t;
	//先執行析構函數,然後執行重載的delete函數
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章