C++关于浅复制和深复制

CodeZero 发布于 2013/04/08 23:10
阅读 467
收藏 1
#include<iostream>
using namespace std;
class A
{
private:
int x;
public:
A():x(0){cout<<x<<endl;};
A(int a):x(a){cout<<x<<endl;};


void set(int a){x=a;}
void show(){cout<<x<<endl;}


//A(A& a);
};
/*A::A(A& a)
{
x=a.x;
}*/
int main()
{
A a(1);
A b(2);
A c=a;
c.show();
a.set(5);
c.show();
a.show();
return 0;

}

运行结果为:

1

2

1

1

5

这个是调用默认复制构造函数的,书上说这是浅复制,预想结果是

1 2 1 5 5 

可是结果却不是,求解释!!!!!!!

加载中
0
johnzhang68
johnzhang68
应该是类中有指针变量的时候才有深copy和浅复制的差别。
0
纳兰清风
纳兰清风
预想结果为何是12155?A c=a;中c.x=1,两个c.show()都输出1
0
johnzhang68
johnzhang68
你的类中没有指针变量, 所以编译器提供的默认的 copy constructor 和 assignment constructor就足够了( 浅复制)。
返回顶部
顶部