これは他のトピックで説明されているかもしれません。しかし、私は満足のいく答えを見つけられませんでした。誰かが私のことを次のように説明できますか?私は、コードを次ていますcreatorで呼び出されたメソッドは、基底クラスから呼び出されますが、派生クラスからは呼び出されません
#include <iostream>
class Base {
public:
Base() {
foo();
}
virtual void foo() {
std::cout << "Base::foo()" << std::endl;
}
};
class Derived : public Base {
public:
Derived(): Base() {}
virtual void foo() {
std::cout << "Derived::foo()" << std::endl;
}
};
int main() {
Derived* p = new Derived();
}
今私の質問ですなぜベースの作成者は、それが派生クラスでオーバーライドされるが、ベースにしていない派生クラスであるfooメソッドを呼び出しますか?
'Derived'の部分はまだ構築されていません。 – Jarod42
[calling-virtual-functions-inside-constructors](http://stackoverflow.com/questions/962132/calling-virtual-functions-inside-constructors)に関連する – Jarod42