掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
派生元クラスでの this の扱いについて (ID:54082)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
tetrapodさん、レスありがとうございます。 それでレスを見ていて気付いたのですが、自分はかなり変な思い込みをしていたようです。 drawable* p = (drawable*)new rectangle; delete p; 私はこのコードは delete (rectangle*)p; にしないと問題があると考えていました。 それも rectangle::~rectangle() を呼び出すため云々ではなく、 new で確保した際の型を delete にきちんと知らせないとメモリリークが発生する(デストラクタで後始末ができ ないから、ではなく単純に new したメモリを開放しきれずに…)、というワケの解らない 思い込みからでした。 で、今回の質問も tetrapod さんが問題にされている"デストラクタを起動"という点ではなく、 delete に正確な型を知らせないとメモリリークが発生するのでは という考えからしました。 > デストラクタは取り合えず virtual にしておけ、と言われる事の意味も理解… デストラクタが呼ばれるという事は当然 delete もその型を知っている事になる… という事はメモリリークも…、これが virtual にしておけという…云々… とんでもない勘違いでした。恥ずかしくなります。 > IS 5.3.5 Delete 2, 3 ISO C++ で定められている事に関する知識が無くてもそこそこやっていける事と怠慢から 知識を得る事を避けていたのですが、今回の事を機に目を通したいと思います。 ありがとうございました。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.