【发布时间】:2018-04-17 12:27:48
【问题描述】:
考虑以下示例:
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()。
为什么会这样?
【问题讨论】:
标签: c++ inheritance overloading c++17