Effective C++ Item 152009年07月31日 12時20分34秒

  • リソースを直接操作する必要が出てくることが多いので、RAII オブジェクトはリソースへの API を提供する必要がある。
  • 明示的な変換の方が安全だが、非明示的な自動変換の方が使いやすい事が多い。

原書からの例。


class Font
{
public:
    explicit Font(FontHandle fh):f(fh){}
    ~Font(){ relaseFont(t);}
private:
    FontHandle f;
};

コンストラクタには暗黙の変換を防ぐために explicit を付ける。

FontHandle Font::get() const
{ return f;}

上記は、get 関数を明示的に用いてリソースを取得する例。

FontHandle Font::operator FontHandle() const
{ return f;}

上記は、FontHandle のキャストを用いてリソースを取得する例。

RAII はリソースを管理するためであり、オブジェクトの内容を隠蔽するためではない。

前回次回

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2009/07/31/4469519/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。