C++拷贝构造函数 参数类型为什么是引用类型

 我来答
光亮中的黑暗
2017-05-24 · TA获得超过427个赞
知道小有建树答主
回答量:63
采纳率:100%
帮助的人:27.3万
展开全部

拷贝构造函数 写成如下的几种方式:

/*1*/CExample(CExample ex){}   // 直接编译错误,不允许为CExample类型11
/*2*/CExample(CExample &ex){} // 是拷贝构造函数11
/*3*/CExample(const CExample &ex){} // 是拷贝构造函数11
/*4*/CExample(const CExample* c_class){} // 不是拷贝构造函数,参数是指针类型,而非对象11
/*5*/CExample& operator = (const CExample &ex)   //赋值函数(赋值运算符重载)

使用引用相对于一般的变量参数,减少了一次内存拷贝

使用const 是限定参数对象是只读的,避免犯错,建议加上const

拷贝构造函数涉及到 深拷贝 和 浅拷贝

当拷贝构造不是引用而是直接对象时,根据拷贝构造的调用时机

显然CExample ce2(ce1), 会默认调用一次拷贝构造函数(ce1作为普通参数对象),这时调用的是ce1自己的拷贝构造函数,这时候又要调用自己的拷贝构造函数,会永远的递归下去。使用引用可以避免无限递归

求采纳,谢谢!

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式