存储指向用 NRVO 返回的对象的指针

Storing a pointer to object returned with NRVO

如果我编写一个工厂方法在本地实例化一个对象,然后按值 returns,打算利用 NRVO(根据此处的一些答案:c++11 Return value optimization or move?),将a pointer/reference 到本地对象指向分配给方法的 return 值的对象?

Object ObjectBuilder::BuildObject( void )
{
    Object obj;

    //this->ObjectReference = obj; //Disregard this
    //OR
    this->ObjectPtr = &obj;

    return obj;
}

正在使用:

ObjectBuilder builder;

Object newObject = builder.BuildObject();

builder.ObjectPtr 是指 newObject 吗?

没有

您正在存储一个悬挂指针。

您的程序在使用此指针时将具有未定义的行为,就是这样。

再多方便的优化也无法挽救您的命运。