[cppll:9299] Re: const pointer の delete

Subject:
[cppll:9299] Re: const pointer の delete
From:
Takefumi Nakayama <naka@...>
Date:
Tue, 05 Aug 2003 22:04:31 +0900
X-Mailer:
Becky! ver. 2.00.08
Message-Id:
<20030805220314.7B57.NAKA‐at‐reedrex.co.jp>
In-Reply-To:
9296
References:
9294 9296
こんばんは、中山です。

この話題は収束しつつありますが、さっき載せたコードに誤りがあったので、
一応訂正…

「GetPerson」に「const」つけてなかった・・・

> (2)クラスのメンバ変数が保持しているメモリ(リソース)はインスタンス開放時(デストラクタ)にて全て開放する。

--------------------------------------------------------------------------------------
class CHoge
{
public:
   CHoge() : m_pPerson(NULL) {
   }
   virtual ~CHoge(){
       SAFE_DELETE( m_pPerson );   //メモリが確保されていたら開放するマクロ
   }

   void Load( const CDB *pDB ){
       SAFE_DELETE( m_pPerson );   //メモリが確保されていたら開放するマクロ
       m_pPerson = new CPerson( pDB );
   }

   // これは「読取専用」でインスタンスのポインタを返したいねん。
   // 呼び出し側で勝手に「delete」されたら困るねん(>_<)
   const CPerson *GetPerson() const { return m_pPerson; }
private:
   CPerson *m_pPerson;
};
--------------------------------------------------------------------------------------

更に、蛇足ですが、私が設けた2つのルールは
「スマートポインタというものの存在を知らなかった」
時の名残です(冷汗)

"~^"~^"~^"~^"~^"~^"~^"~^"~^"~^"~^"~^"~^"~
中山 剛史 <naka@...>
"~^"~^"~^"~^"~^"~^"~^"~^"~^"~^"~^"~^"~^"~

スレッド

Navigation

検索

[検索ヘルプ]

Maintener: Tietew <www.tietew.jp>
Powered by Ruby on Rails, Mongrel, PostgreSQL, and Hyper Estraier.
click here