专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C++

小白 c++确定复制构造函数的执行次数时参数为什么是引用

发布时间:2011-06-28 13:52:17 文章来源:www.iduyao.cn 采编人员:星星草
小白求救 c++确定复制构造函数的执行次数时参数为什么是引用
比如A(A&one){cout<<"复制构造函数";}是来确定复制构造函数执行次数的,但是为什么参数要是它(A&one)呢?教程说按值传递会使用对象的副本,这时候就会执行复制构造函数,但是参数必须是像(A&one)这样的引用类型吗?

------解决方案--------------------
A(A one);

你不用引用A& one你先试试看有什么效果,在编译器中执行一下...就知道了



不用引用:
传参的时候就会产生副本,而副本也是调用复制构造函数,这样是不是死循环了?

这种问题,自己跑一下就知道了


------解决方案--------------------
引用:
还有一个问题求救
class A
{
public:
    A(){}
   A(A& one){cout<<"复制"<<endl;}
};
情况一:                    情况二:
void main()                void main()
                            {A a;
                             A b=A (a);}
{  A a;                      输出了2个复制
A b;
b=A(a);}                     
输出了1个复制
 情况一可以看成是对类b的赋值吗?情况二可以看成是对类b的初始化吗?为什么输出结果不一样?   

情况2中
A b=A(a);
A(a)先用复制构造函数创建了一个临时对象,输出一次“复制”
再调用一次复制构造函数用该临时对象初始化b,再输出一次“复制”
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: