私のアプリには、複数の初期化を行う初期化関数があります。 initの実行を追跡するための良い方法は何ですか?init n
が失敗した場合、終了する前にクリーンアップ/非初期化する前に、すべてのinitが失敗するようにします。これが通常処理される良い方法はありますか?
これが通常処理される良い方法はありますか?
はい。それはRAIIと呼ばれています。
リソース獲得は初期化またはRAIIであると、次のように要約できます。
- 各リソースをクラスにカプセル化します。
- コンストラクタがリソースを取得してすべてのクラスの不変条件を確立するか、それができない場合は例外をスローします。
- デストラクタはリソースを解放し、例外をスローしません。
- 常に次のいずれかのRAIIクラスのインスタンスを介してリソースを使用します。
- 自動保存期間または一時的なライフタイム自体がある、または
- 自動または一時オブジェクトの存続期間によって制限される存続期間を持っている
これは、この問題を処理するための通常のC++手法です。