deleteとデストラクタの動きについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
山崎

deleteとデストラクタの動きについて

#1

投稿記事 by 山崎 » 16年前

毎度お世話になっております、山崎です。
タイトルがわかりにくくて申し訳ありませんが、
今回はdelete演算子を使ったときのデストラクタの動きについてお伺いに参りました。
エディタはVCC2008を使っております。

今回お伺いしたいことを抽象的に表すと、このような感じです。

あるクラスAを継承した子クラスA'があります。
A型のポインタaを宣言し、そのポインタaにA'型のインスタンスをnewで作成します。
この後aをdeleteしA'型のインスタンスを解放したとき、
A'のデストラクタがどうしても呼ばれなくて悩んでいるんですが、
もしかしてそういうものなのでしょうか?
Aのデストラクタは呼ばれているようです。

Justy

Re:deleteとデストラクタの動きについて

#2

投稿記事 by Justy » 16年前

 多分基底クラス Aのデストラクタが virtualになっていないのが原因かと。


基底クラスには仮想デストラクタをもたせよう 14項 - ひげぽん OSとか作っちゃうかMona-
ttp://d.hatena.ne.jp/higepon/20051110/1131597177

6章:継承
ttp://www5c.biglobe.ne.jp/~ecb/cpp/06_09.html

box

Re:deleteとデストラクタの動きについて

#3

投稿記事 by box » 16年前

> タイトルがわかりにくくて申し訳ありません

そうお感じになっているのでしたら、
わかりやすいタイトルをお考えになってみては
いかがでしょうか。

> 今回お伺いしたいことを抽象的に表すと、このような感じです。

抽象的にお書きになるよりも、
お聞きになりたい点を具体的に示される方が
回答が付きやすいと思います。
例えば、お書きになったソースコードを提示する、
というような方法があります。

山崎

Re:deleteとデストラクタの動きについて

#4

投稿記事 by 山崎 » 16年前

Justyさん
ご返信誠にありがとうございます。
デストラクタにvertualをつけたところ、一発で問題が解決してしまいました。
こんな基本的なことを知らなかったとは、お恥ずかしい限りです。

boxさん
タイトルにつきましては
一体どのようにすればわかりやすくて簡潔かと5分程度悩みましたが、
私のプログラミングの経験ではなかなか簡潔にまとめることができず、
ごちゃごちゃして長いタイトルにするよりはと短くさせていただきました。
コードを提示することも考えたのですが、問題の箇所は複数のファイルにまたがっており
他にもいろんなクラスとかが絡んでいたため、
そのままコードを貼り付けるのでは読むほうも大変なのではと考え抽象的に示しました。

私まだまだプログラミングの経験が浅いためこのような間違いもするかとは思いますが、
どうかそこは優しくご指導していただきたいと思います。
何も考えずテキトーに記事を立てているわけではなく
素人なりにより良い記事にするようにしていることを、どうかご理解頂けたらと思います。

閉鎖

“C言語何でも質問掲示板” へ戻る