C++相談室 part89
■ このスレッドは過去ログ倉庫に格納されています
0714デフォルトの名無しさん
2011/07/02(土) 17:53:35.00public:
Base() { printf("Base();\n"); }
~Base() { printf("~Base();\n"); }
};
class Derived : public Base {
public:
Derived() { printf("Derived();\n"); }
~Derived() { printf("~Derived();\n"); }
};
int main() {
Base * pBase = new Derived;
delete pBase;
}
出力:
Base()
Derived()
~Base()
で正しい。~Derived() は呼ばれるはずがない
Base クラスのデストラクタが Derived クラスでオーバーライドされていないので、pBase が delete される時に呼ばれるのは Base クラスのデストラクタになる
オーバーライドするためには Base クラスのデストラクタを仮想化する必要がある
■ このスレッドは過去ログ倉庫に格納されています