您的位置:首页 > 其它

对象浅层复制的三个粗糙的实例

2012-05-25 21:13 225 查看
class A
{
private:
int a;
int b;
int* c;
public:
A()
:a( 0 )
{
b=2;
c=&b;
}
A(int n)
:a( n )
{
b=2;
c=&b;
}
void print()
{
cout<<"a="<<a<<endl<<"b="<<b<<endl;
}
void add()
{
a++;
(*c)++;
}
};

int _tmain(int argc, _TCHAR* argv[])
{
//注意,以下浅层复制中的指针都将共用aa对象的指针资源。
A aa(1);      //显式构造aa
A bb(2);      //(1)显式构造bb
bb= aa;        //注意,类对象可以直接用=复制,浅层复制
aa.print();
bb.add();
aa.print ();

A cc;         //(2)默认构造cc
cc=aa;        //浅层复制
cc.print();

A dd=aa;     //(3)注意,浅层复制,这里dd将不会调用构造函数
dd.print();
dd.add();
dd.print();
aa.print();

getchar();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐