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

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

2014-01-12 
小白求救c++确定复制构造函数的执行次数时参数为什么是引用比如A(A&one){cout复制构造函数}是来确定

小白求救 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,再输出一次“复制”

热点排行