class A
{
int x,y;
public:
A(int a=0,int b=0)
{x=a;y=b;}
/* ... */
}
A& fctr()
{
A loc(1,2);
return loc;
}
让我们看一下这条指令:
A x=fctr();
fctr()
返回对被销毁对象的引用...<<这不是问题-_-
在上面的说明中,根据fctr返回的引用,程序复制将销毁的对象 loc 转换为x。
另一方面,按值复制将对象 loc 返回到x !!
我看到的唯一区别是,当通过引用返回时,对象 loc 被销毁,但是当按值返回时,对象 loc 不会销毁直到说明已经完成。
因此按值返回似乎是安全的,它与通过引用返回相同!!
我在书中读到的内容以及我从人们那里听到的内容是,通过引用返回比通过值返回更快...
那么为什么通过引用返回比通过值返回快?
......我认为我错了,但我不知道它是什么?!!!
答案 0 :(得分:0)
通过引用返回 - 系统不需要分配&初始化任何额外的内存。只需要传递已存在位置的内存地址。
按价值回归 - 系统需要分配&初始化额外的记忆。
完全取决于您是否需要“按参考”或“按价值”的要求。