下面的东西也是说出来大家都知道,但是真正编码的时候可能又会不注意了,
用代码说话
class A
{
public:
A():p(0){}
A(int* pp):p(pp){}
~A()
{
if (p)
{
delete p;
cout<<"~A()"<<endl;
}
}
private:
int *p;
};
int main()
{
//下面的大括号只是想说明域的问题,早点让程序卡擦
{
A a1;
{
int *p= new int(5);
A a2(p);
a1=a2;
}
}
system("pause");
return 0;
}
程序的结果肯定是卡擦了