C++拷贝构造函数 参数类型为什么是引用类型
1个回答
展开全部
拷贝构造函数 写成如下的几种方式:
/*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自己的拷贝构造函数,这时候又要调用自己的拷贝构造函数,会永远的递归下去。使用引用可以避免无限递归
求采纳,谢谢!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询