[cpp]
//A.h
class A
{
public:
A()
{
std::cout<<"call A constructor"<
~A()
{
std::cout<<"call A destructor"<
void* operator new(size_t size)
{
std::cout<<"call A::operator new[] size:"<
}
void operator delete[](void* p)
{
std::cout<<"call A::operator delete[]"<
}
void operator delete(void* p)
{
free(p);
}
};
//A.h
class A
{
public:
A()
{
std::cout<<"call A constructor"<
~A()
{
std::cout<<"call A destructor"<
void* operator new(size_t size)
{
std::cout<<"call A::operator new[] size:"<
}
void operator delete[](void* p)
{
std::cout<<"call A::operator delete[]"<
}
void operator delete(void* p)
{
free(p);
}
};[cpp]
//Test.cpp
#include
#include "A.h"
void* operator new[](size_t size)
{
std::cout<<"call global new[] size: "<
}
void operator delete[](void* p)
{
std::cout<<"call global delete[] "<
int _tmain(int argc, _TCHAR* argv[])
{
std::cout<<"sizeof A "<
delete []p1;
system("pause");
return 0;
}