为什么按引用返回比按值返回更快
Why returning by reference is faster than returning by value?
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 在指令完成之前不会销毁。
因此,按值返回似乎是安全的,它与按引用返回相同!
我在书中读到的和我从人们那里听到的是,按引用返回比按值返回更快......
那么为什么按引用返回比按值返回更快呢?
。我认为我错了,但我不知道这是什么?!!!
通过引用返回 - 系统不需要分配和初始化任何额外的内存。只需传递已存在位置的内存地址。
按值返回 - 系统需要分配和初始化额外的内存。
这完全取决于您需要"按引用"还是"按值"的要求。
相关文章:
- 为什么 Serial.println(<char[]>);返回随机字符?
- 为什么模板类中的对象不能返回值
- 为什么(-1)%vector::size()总是返回0
- 为什么与常规GCC不同,即使有"学究性错误",MinGW-GCC也能容忍丢失的返回类型
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 如果"new int"返回"int*",那么为什么"new int[n]"不返回"int**"?
- 为什么我可以通过引用修改常量返回
- 有人知道为什么在开关中使用stoi函数会返回恒定的错误吗
- 为什么是谷神星协方差.计算()似乎永远运行而不返回?
- 为什么在我的函数类型后使用引用运算符 (&) 允许我修改它返回的值?
- 为什么我们要为avl树实现返回一个指向节点的指针,而不是void函数
- 为什么我的程序在for循环中k=0时返回垃圾值
- 为什么将值返回函数传递给重载=运算符对运算符函数有效,而对其他运算符无效
- 为什么返回类型中需要typename?C++
- <Windows>为什么 std::thread::native_handle 返回类型为"long long unsigned int"的值,而不是 void*(又名 HANDLE)?
- C 参考class对象的返回 - 为什么不工作
- C 参考和类对象的非参考返回 - 为什么输出相同
- c 参考class对象的返回 - 为什么未调用复制构造函数
- SDL_BlitSurface() 返回 -1 ..为什么
- 将5计算为3的幂,但它返回0.为什么