类的内部重载new delete 监管new delete (实现单例模式,统计次数,避免反复delete异常)。
每一个默认的类都有new delete。
#include <iostream>
using namespace std;
class Test
{
public:
static int numTest;
static Test* pTest;
Test()
{
}
static void * operator new(size_t size)
{
if (pTest == nullptr)
{
pTest = ::new Test();
++numTest;
return pTest;
}
else
{
return pTest;
}
}
static void operator delete(void *p)
{
if (pTest != nullptr)
{
--numTest;
::delete p;
}
}
};
int Test::numTest=0;
Test* Test::pTest=nullptr;
void main()
{
Test *t1 = new Test();
Test *t2 = new Test();
Test *t3 = new Test();
cout << t1->numTest << endl;
cin.get();
}