64,670
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
class A
{
public:
void operator delete(void *);
int a;
};
void A::operator delete(void *p)
{
free(p);
int n;
int *pr = &n;
int me = (int)p;
for (int i=0; i<500; i++)
{
if (pr[i]==me)
{
pr[i] = 0;
}
}
cout << "operator delete" << endl;
}
int main()
{
A *p = new A;
delete p;
cout << "p=" << (int)p << endl;
return 0;
}
class A
{
public:
A **point;
~A(){ *point = NULL;}
};
A *p=new A;
p->point = &p;
delete p;
#include <iostream>
using namespace std;
class A
{
public:
~A();
int a;
};
A::~A()
{
cout << "A destructor" << endl;
int n;
int *pr = &n;
int me = (int)this;
for (int i=0; i<500; i++)
{
if (pr[i]==me)
{
pr[i] = 0;
}
}
}
int main()
{
A *p = new A;
delete p;
cout << "p=" << (int)p << endl;
return 0;
}
c/c++就是这种类型决定行为的语法,否则,微软也不会在他的MFC类库中来个运行时类型识别RTTI的封装啦
#define mydelete delete
#define DELETE(p) do {
mydelete p;
p=NULL;
}while(0)
class Demo
{
public:
int m_i;
void name()
{
cout << m_i << endl;
}
};
int main(int argc, char** argv)
{
Demo* p = new Demo;
p->name();
struct Demo
{
int m_i;
};
void name__4Demo(struct Demo *p)
{
cout << p->m_i << endl;
}
int main(int argc, char** argv)
{
Demo* p = new Demo;
name__4Demo(p);