簡體   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