タグ

C++とvoidポインタに関するyowanoのブックマーク (1)

  • アリスはvoid*がお嫌い | Moonmile Solutions Blog

    久々の「アリプラ」シリーズです(自分も忘れていたよ)。 void*にdeleteしてもデストラクタが呼ばれない!? – かずきのBlog@Hatena http://d.hatena.ne.jp/okazuki/20120204/1328323854 というのを見つけて、一瞬「?」と思ったのですが、確かにそうですね。delete するときに void* を渡すと型情報が失われる…というか、delete が型情報を判別できないので、メモリとしか解放されなくてデストラクタが呼び出されません、という現象です。 配列を new したときに、「delete [] ポインタ」 で解放しないといけません。ってのと同じ話だと思います。 #include <iostream> using namespace std; // アリスクラス class Alice { public: Alice() { cou

    yowano
    yowano 2013/10/25
    普通に void* のまま delete してしまうと、デストラクタが呼び出されないが、delete 時に元の型に戻してやると、正常にデストラクタが呼び出される。virtualデストラクタも機能する。
  • 1