请帮助初学者!!!c++
请大神看一下这个程序为什么会崩溃!!!#include <iostream>
using namespace std;
class A
{
public:
A(){x=new int;*x=5;}
~A(){delete x;/*x=NULL*/;}
A(const A&a)//a代表形式参数,传递进来的对象
{
cout<<"复制构造函数执行。。。\n"<<endl;
x=a.x;//浅拷贝
}
void print()const{cout<<*x<<endl;}
void set(int i){*x=i;}
private:
int *x;
};
int main()
{
A*a=new A();
cout<<"a:";
a->print();
cout<<endl;
A b=(*a);
b.print();
a->set(32);
cout<<"b:";
b.print();
cout<<endl;
delete a;
return 0;
} delete a;
此时会调用 ~A(){ delete x;/*x=NULL*/; }
然后在main函数结束时
再调用b 的析构函数~A(){ delete x;/*x=NULL*/; } x被delete过了 你现在再delete 就错了 整个程序只创建一个对象,只有一个x(*a中的与b中的是一样的,从a->set(32);b中的也改变 也能看出来),怎么能delete两次?
页:
[1]