给定一个基类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
?