各位帮个忙,帮我看一下问题出在哪
class A
{
public A() {x=new int;*x=5;}
~A(){delete x;x=0;}
A(const A&a)
{ x=new int
*x=*(a.x)
}
void print()const{cout<<*x<<endl;}
void set(int i){*x=i}
private:
int *x;
};
int main()
{
A*a=new A();
A b=(*a);
return 0;
}
浅层复制构造函数 A b=(*a) 只句代码不是建了对象b,然后把a对象赋值给b 既然建立了对象b 那么不是要调用构造函数public A() {x=new int;} b对象x指针不是指向了一个新的空间了吗,为什么还要在复制构造函数中 再用x=new int 让b指向另一个空间 呢