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().这只能通过虚拟方法解决吗?