对象浅层复制的三个粗糙的实例
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 }
**************************************************************
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对困难,能够不休不眠;面对压力,能够迎接挑战。他们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想,用智慧把属于自己的事业开创。其实我是一个程序员[=.=]
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对困难,能够不休不眠;面对压力,能够迎接挑战。他们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想,用智慧把属于自己的事业开创。其实我是一个程序员[=.=]