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

 

 1 class A 
 2 {
 3 private:
 4     int a;
 5     int b;
 6     int* c;
 7 public:
 8     A()        
 9     :a( 0 )
10     {
11         b=2;
12         c=&b;
13     }
14     A(int n)        
15     :a( n )
16     {
17         b=2;
18         c=&b;
19     }
20     void print()
21     {
22         cout<<"a="<<a<<endl<<"b="<<b<<endl;
23     }
24     void add()
25     {
26         a++;
27         (*c)++;
28     }
29 };
30 
31 int _tmain(int argc, _TCHAR* argv[])
32 {
33     //注意,以下浅层复制中的指针都将共用aa对象的指针资源。
34     A aa(1);      //显式构造aa
35     A bb(2);      //(1)显式构造bb
36     bb= aa;        //注意,类对象可以直接用=复制,浅层复制
37     aa.print();    
38     bb.add();
39     aa.print ();
40 
41     A cc;         //(2)默认构造cc
42     cc=aa;        //浅层复制
43     cc.print();
44 
45     A dd=aa;     //(3)注意,浅层复制,这里dd将不会调用构造函数
46     dd.print();    
47     dd.add();    
48     dd.print();
49     aa.print();
50 
51     getchar();
52     return 0;
53 }

posted on 2012-05-25 21:13  NLP新手  阅读(260)  评论(0编辑  收藏  举报

导航