Effective C++ Item 15 ― 2009年07月31日 12時20分34秒
- リソースを直接操作する必要が出てくることが多いので、RAII オブジェクトはリソースへの API を提供する必要がある。
- 明示的な変換の方が安全だが、非明示的な自動変換の方が使いやすい事が多い。
原書からの例。
コンストラクタには暗黙の変換を防ぐために explicit を付ける。class Font { public: explicit Font(FontHandle fh):f(fh){} ~Font(){ relaseFont(t);} private: FontHandle f; };
上記は、get 関数を明示的に用いてリソースを取得する例。FontHandle Font::get() const { return f;}
上記は、FontHandle のキャストを用いてリソースを取得する例。FontHandle Font::operator FontHandle() const { return f;}
RAII はリソースを管理するためであり、オブジェクトの内容を隠蔽するためではない。
コメント
トラックバック
このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2009/07/31/4469519/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。