标签:
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 class Foo 5 { 6 private: 7 string ss; 8 public: 9 Foo(string s):ss(s) 10 { 11 cout<<"构造函数"<<endl; 12 } 13 Foo(Foo& f):ss(f.ss) 14 { 15 cout<<"拷贝构造函数"<<endl; 16 } 17 Foo& operator =(const Foo& f1) 18 { 19 ss=f1.ss; 20 cout<<"赋值操作"<<endl; 21 } 22 void test(Foo f2) 23 { 24 25 } 26 }; 27 28 int main() 29 { 30 Foo ff1("word"); 31 Foo ff2("English"); 32 Foo ff3(ff1);
//Foo(Foo f):ss(f.ss) 错误
14 //{
15 // cout<<"拷贝构造函数"<<endl;
16 //}
//如果不是引用类型,将会进行一次拷贝,即创建一个Foo f=ff1,而创建时就会发生如第34行一样的问题,调用拷贝构造函数,然后就是循环 33 ff1=ff3; 34 Foo ff4=ff2; 35 ff1.test(ff2); 36 return 0; 37 }
标签:
原文地址:http://www.cnblogs.com/zhao-x-m/p/5424210.html