#include<iostream>
using namespace std;
/*
new:
new operator:申请空间+调用构造 不可以重载
operator new:申请空间 可以重载
delete:
delete operator:调用析构+释放空间 不可以重载
operator delete:释放空间 可以重载
*/
class Node
{
public:
Node(int a=0,int b=0)//构造
{
cout<<"Node(int a=0,int b=0)"<<endl;
_a=a;
_b=b;
}
~Node()//析构
{
cout<<"~Node()"<<endl;
}
void*operator new(size_t size)
{
cout<<"void*operator new(size_t size)"<<endl;
void*p=malloc(size);
return p;
}
void operator delete(void* p)
{
cout<<"void operator delete(void* p)"<<endl;
free(p);
}
private:
int _a;
int _b;
};
int main()
{
Node * a=new Node;
/*
调用operator new申请sizeof(Node)大小的空间
在调用Node的构造函数
*/
delete a;
/*
调用Node的析构函数
调用operator delete释放空间
*/
return 0;
/*
运行结果:顺序:
void*operator new(size_t size)
Node(int a=0,int b=0)
~Node()
void operator delete(void* p)
*/
}
new和delete重载
最新推荐文章于 2023-07-31 17:14:52 发布