繁体   English   中英

从函数通过C ++中的值返回auto_ptr有效负载

[英]Return auto_ptr payload by value in C++ from function

C ++标准是否保证在通过函数的值返回auto_ptr的有效载荷时不会出现崩溃:

class Foo { ... };

std::auto_ptr<Foo> createFoo() { 
  return std::auto_ptr<Foo>(new Foo(...));
}
...
Foo getFoo() {
  std::auto_ptr<Foo> foo(createFoo());
  return *foo; /// would be here a crash?
}

/// main
const Foo& foo(getFoo());

与标准相对应的情况是:复制*foo ,然后销毁foo ,最后执行return 还是有另一个步骤?

我在GCC上测试了此示例,没有崩溃,但是我不确定它是否可以与其他编译器一起使用。

getFoo按值返回时,它将创建Foo对象的副本(还有另一个)。 在那之后,原始对象被auto_ptr删除并不重要。

但是,要使用auto_ptr然后创建一个副本,这倒是相当奇怪的代码。

这是非常奇怪的代码,但是,可以保证。 没有RVO或移动语义,因此应该可以。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM