C++での継承に関する非常に基本的な質問があります。
class A
{
public:
void foo() { print(); }
protected:
void print() {}
};
class B : public A
{
protected:
void print() { std::cout << "test" << std:: endl; }
};
今、次のコード
B b;
b.foo();
何も出力しないため、foo()は明らかに新しく定義されたprint()を呼び出しませんでした。これは仮想メソッドを使用することによってのみ解決できますか?