给定一个基类A,定义了A::get和A::add函数。
class A {
public:
int get() { return 3; }
int add() {
return get() + get();
}
};
注意A::add调用A::get. 派生类是否B可以调用A::add但使用它自己的B::get函数?就像是:
class B : public A {
int get() { return 7; }
};
#include <iostream>
int main() {
A foo;
std::cout << foo.add() << std::endl;
B bar;
std::cout << bar.add() << std::endl;
return 0;
}
在第二种情况下,预期的输出14不是。6如果可以控制A,我可以创建::get一个虚函数,每个派生类都可以根据需要实现它。但是,让我们假设它A是不可变的 - 我如何称呼正确的::get?