gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 17:55:50 26 4
gpt4 key购买 nike

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

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 吗?

最佳答案

没有。

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

你的程序,当它使用这个指针时,将有未定义的行为,就是这样。

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

关于c++ - 存储指向用 NRVO 返回的对象的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38124429/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com