为什么按引用返回比按值返回更快

Why returning by reference is faster than returning by value?

本文关键字:返回 为什么 引用      更新时间:2023-10-16
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 中。

另一方面,按值返回将对象定位复制到 x 中!!

我看到的唯一区别是,当通过引用返回时,对象 loc 被销毁,但当按值返回时,对象 loc指令完成之前不会销毁。

因此,按值返回似乎是安全的,它与按引用返回相同!

我在书中读到的和我从人们那里听到的是,按引用返回比按值返回更快......

那么为什么按引用返回比按值返回更快呢?

。我认为我错了,但我不知道这是什么?!!!

通过引用返回 - 系统不需要分配和初始化任何额外的内存。只需传递已存在位置的内存地址。

按值返回 - 系统需要分配和初始化额外的内存。

这完全取决于您需要"按引用"还是"按值"的要求。