#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函数
}
new和delete函数的重载
最新推荐文章于 2024-02-05 01:23:48 发布