C++方法中的引用变量
C++ reference variable from method
这样做有意义吗:
class SomeClass
{
public:
static Object getObject()
{
return Object("example")
}
};
int main()
{
const Object& myObject = SomeClass::getObject();
// do something with myObject
}
或者这与仅获取对象相同
const Object myObject = SomeClass::getObject();
?
从 Herb Sutter 关于这个主题的文章(可以在这里找到(来看,这两种情况都是正确的:
通常,临时对象仅持续到完整结束 它出现的表达式。但是,C++故意指定 将临时对象绑定到堆栈上对 const 的引用 将临时的生存期延长到 引用本身,从而避免了本来是常见的 悬空引用错误。
但是,如果从案例 1 中删除const
,则不行。
使用 NRVO 时,两者之间存在细微差别。
命名返回值优化只能使用局部变量。参考不是:
auto foo() -> Object
{
const Object& myObject = SomeClass::getObject();
return myObject; // no NRVO in this case
}
auto foo() -> Object
{
const Object myObject = SomeClass::getObject();
return myObject; // NRVO applies in this case
}
现场示例
相关文章:
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 多个"常量引用"变量可以共享同一个内存吗?
- 在 gtest 中初始化堆栈上的引用变量的隔离错误
- C++方法中的引用变量
- 作为赋值(增加引用变量)C++的左操作数所需的左值
- 使用更改此变量的函数在同一行中打印引用变量
- 将延迟变量分配给引用变量
- 如何通过引用获取引用变量的地址?
- 将引用变量传递给函数
- C++中引用变量的内存?
- 按名称存储和引用变量列表
- 返回一个C++引用变量 VS 返回一个变量
- c++ 在 if 语句中分配引用变量
- 引用变量何时合适,为什么?你能解释一下实际的语法和位置吗?
- C++ - 将一个变量分配给另一个变量和将变量分配给引用变量有什么区别?
- 在类范围内声明时,应在 C++14 中引用变量模板
- 当引用变量的引用"死亡"时,它会发生什么?
- 将非按引用变量分配给返回按引用的函数,反之亦然
- 引用变量如何存储在mem中
- 引用变量存储在哪里