2

私は次のコードを持っています:

std::string HtmlToText( std::string const& html )
{
    boost::scoped_array<char> text( converter.toText( html.c_str() ) );
    return text.get();
}

このコードに関する私の懸念は、オブジェクトがリターン後、一時的なリターンオブジェクトが構築される前textに破棄されるかどうかでした。その時に破壊されるとしたら、これは問題になります。text.get()std::string

関数スコープのreturnステートメントに関連してオブジェクトを破棄するタイミングに関するルールと詳細についてC++03標準を検索しましたが、必要なものを見つけることができませんでした。誰かが私がそれを見つけるのを手伝ってもらえますか?

4

1 に答える 1

3

C ++ 03ドラフトのテキストは手元にありませんが、呼び出しから作成された一時的なものは、実際のtextオブジェクトが削除される前に破棄されることを思い出しているようです(ブロックスコープ内の自動オブジェクトのLIFO順序付け)。この問題が発生しないことを保証します。

于 2012-04-25T03:53:37.403 に答える