小白 c++确定复制构造函数的执行次数时参数为什么是引用
小白求救 c++确定复制构造函数的执行次数时参数为什么是引用
比如A(A&one){cout<<"复制构造函数";}是来确定复制构造函数执行次数的,但是为什么参数要是它(A&one)呢?教程说按值传递会使用对象的副本,这时候就会执行复制构造函数,但是参数必须是像(A&one)这样的引用类型吗?
------解决方案--------------------
A(A one);
你不用引用A& one你先试试看有什么效果,在编译器中执行一下...就知道了
不用引用:
传参的时候就会产生副本,而副本也是调用复制构造函数,这样是不是死循环了?
这种问题,自己跑一下就知道了
------解决方案--------------------
情况2中
A b=A(a);
A(a)先用复制构造函数创建了一个临时对象,输出一次“复制”
再调用一次复制构造函数用该临时对象初始化b,再输出一次“复制”
比如A(A&one){cout<<"复制构造函数";}是来确定复制构造函数执行次数的,但是为什么参数要是它(A&one)呢?教程说按值传递会使用对象的副本,这时候就会执行复制构造函数,但是参数必须是像(A&one)这样的引用类型吗?
------解决方案--------------------
A(A one);
你不用引用A& one你先试试看有什么效果,在编译器中执行一下...就知道了
不用引用:
传参的时候就会产生副本,而副本也是调用复制构造函数,这样是不是死循环了?
这种问题,自己跑一下就知道了
------解决方案--------------------
情况2中
A b=A(a);
A(a)先用复制构造函数创建了一个临时对象,输出一次“复制”
再调用一次复制构造函数用该临时对象初始化b,再输出一次“复制”