「スマート ポインター」として機能し、破棄されたときにある種のシステム リソースを解放するクラスがあるとします。
class Resource{
protected:
ResourceHandle h;
public:
Resource(ResourceHandle handle)
:h(handle){
}
~Resource(){
if (h)
releaseResourceHandle(h);//external function, probably from OS
}
};
そして、「リソース」の初期化に使用される値を返す関数がいくつかあります。
ResourceHandle allocateHandle();
今、私のコードでこれを行うと:
Resource resource(allocateHandle());
AND allocateHandle()が例外をスローすると、正確にはどうなりますか? クラッシュは Resource() の構築中または構築前に発生しますか?
常識的に言えば、allocateHandle が戻る前に例外がスローされるため、実行は Resource() コンストラクターに入るまでもありませんが、正確にはわかりません。これは正しい仮定ですか?