码迷,mamicode.com
首页 > 其他好文 > 详细

拷贝构造函数的参数为什么必须是引用?

时间:2016-04-23 11:55:16      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

 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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!