私は以下のようなコードを実行していましたが、子クラスのメソッドが非仮想であることがわかりましたが、メソッドはその基本クラスポインタ。誰でも私に理由を教えてもらえますか?基本クラスの仮想メソッドと子クラスの非virtulaメソッド。子クラスのメソッドが非仮想であっても呼び出される方法はまだありません
class Base {
virtual void method() { std::cout << "from Base" << std::endl; }
public:
virtual ~Base() { method(); }
void baseMethod() { method(); }
};
class A : public Base {
void method() { std::cout << "from A" << std::endl; }
public:
~A() { method(); }
};
int main(void) {
Base* base = new A;
base->baseMethod();
getchar();
return 0;
}
出力 -
'virtual'キーワードは、派生クラスではオプションです。 –
virtual once - virtual forever ... "devirtualize"メソッドはありません。 –
子クラスの仮想キーワードの意味は省略できますか? –