C++相談室 part62at TECHC++相談室 part62 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト850:デフォルトの名無しさん 08/07/21 04:35:49 クラスのメンバ関数が、自分自身をdeleteする処理を行っても 安全なのでしょうか? つまりdelete this;ってことになるかな。 自分自身が解体された後にメンバ関数からリターンするって何か変ですよねぇ。 しかもdelete this;の後にも処理が続いてたらやばいですよね。 851:デフォルトの名無しさん 08/07/21 06:40:13 >>850 安全。ただしもちろん、それやったあとにそのインスタンスを使っちゃいけない。 たとえばboost::intrusive_ptrみたいに、値に自身の参照カウンタを持たせるスマートポインタの場合、 値となる型に void Release() { if (!--refCount_) delete this; } みたいなメンバ関数を用意することになる。 852:デフォルトの名無しさん 08/07/21 06:41:32 規格上どうなってるかは知らないけど、そういうことをやってるライブラリは知ってる。 他のメンバーにアクセスせずにリターンするだけなら問題はないような。 実際どっちのデザインがいいのだろ。 A a = A::createInstance(); a.Free(); A::Free(a); 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch