Effective C++ Item 172009年08月01日 12時48分53秒

  • new で生成したオブジェクトを smart pointer に割り当てる時は単独行で行なう。

一つの文にある複数の式を実行する順番は決められていない。コンパイラは任意の順序で実行することが出来る。そのため、smart pointer に新しく生成されたオブジェクトが代入される前に、他の部分の文から例外が発生し、リソースが漏れてしまうことがある。しかし、単独行にあればその様な事が起きない。

原書では、以下の様な例が上げられている。


processWidget(std::tr1::shared_ptr<Widget>(new Widget), priority());

前回次回