仮想デストラクタ
こんなプログラムを見た。
class Base{ public: Base() : _id( 0 ){} Base( int id ) : _id( id ){} int GetID(){ return _id; } private: int _id; }; class Hoge : public Base{ public: Hoge( int id ) : Base( id ){} }; class Hogehoge : public Base{ public: Hogehoge( int id ) : Base( id ){} };
Base* p[ 3 ]; // 生成 p[ 0 ] = new Hoge( 1 ); p[ 1 ] = new Hogehoge( 2 ); p[ 2 ] = new Hoge( 1 ); ... // 解放 for( int i = 0 ; i < 3 ; i++ ){ if( p[ i ] == null ) continue; switch( p[ i ]->GetID() ){ case 0: delete (Base*)p[ i ]; break; case 1: delete (Hoge*)p[ i ]; break; case 2: delete (Hogehoge*)p[ i ]; break; } }
かっこよすぎる(ノ∀`)