<分区>
考虑以下示例:
struct Base
{
void foo()
{
cout << "Base foo\n";
}
void bar()
{
cout << "Base bar\n";
}
};
struct Derivate : public Base
{
void foo(int x)
{
cout << "Derivate foo\n";
}
};
如果我们创建两个实例,比如
Base a;
Derivate b;
Base
对象a
可以像往常一样调用它的成员函数(a.foo(); a.bar();
)。
当使用 b
时,调用 b.bar()
会按预期工作,但由于我重载了 Base::foo()
,这是不可能的调用 b.foo()
。
这是为什么?