来自方法的 C++ 引用变量

Fuz*_*all 4 c++ reference

这样做有意义吗:

class SomeClass
{
public:
    static Object getObject()
    {
        return Object("example")
    }
};

int main()
{
    const Object& myObject = SomeClass::getObject();

    // do something with myObject
}
Run Code Online (Sandbox Code Playgroud)

或者这与只是获取对象一样

const Object myObject = SomeClass::getObject();
Run Code Online (Sandbox Code Playgroud)

?

Gup*_*pta 6

从 Herb Sutter 关于这个主题的文章中,可以在这里找到,两种情况都是正确的:

通常,临时对象仅持续到它出现的完整表达式的结尾。但是,C++ 特意指定将临时对象绑定到堆栈上对 const 的引用将临时对象的生命周期延长到引用本身的生命周期,从而避免了常见的悬空引用错误。

但是,如果您const从案例 1 中删除,那就不行了。

  • 如果没有 `const`,`Object&& myObject = SomeClass::getObject();` 就可以完成。 (2认同)