我有一个关于 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()。这只能通过使用虚拟方法来解决吗?