首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

为什么类的拷贝构造函数的参数必须是引用呢解决办法

2012-04-10 
为什么类的拷贝构造函数的参数必须是引用呢为什么不能传值呢???有点不太清楚???[解决办法]---------------

为什么类的拷贝构造函数的参数必须是引用呢
为什么不能传值呢???有点不太清楚???

[解决办法]
----------------------
不能,因为拷贝构造函数如果是这样的
T& operator=(T t);
那么我们调用
T t1;
T t = t1;时,拷贝构造函数被调用,
这样就出现了,要把operator=(T t);压栈时会临时生成一个T对象t2,t2靠什么而来?当然,这个对象(t2)也是“拷贝构造”的,那么要靠新的构造了...那么要构造tn又要新的拷贝(同个道理),那么就是个恶性循环了,内存出错

如果使用引用的话,不会有新对象的构造,那么也不会有这种恶性循环了
[解决办法]
传引用不传指针,是为了更自然!
说神了,是为了编译器屏蔽更多细节!

不过iu_81兄举的例子是赋值操作符,
道理的确和拷贝构造函数一样:)

热点排行