为什么编译器不会通过派生类对象调用基类函数(参数化为一)?派生类从基类继承函数,对吧?
#include<iostream>
using namespace std;
class Base
{
public:
int fun() { cout << "Base::fun() called"; }
int fun(int i) { cout << "Base::fun(int i) called"; }
};
class Derived: public Base
{
public:
int fun() { cout << "Derived::fun() called"; }
};
int main()
{
Derived d;
d.fun(5);
return 0;
}
但是,当我使用示波器分辨率运算符时,我得到了所需的输出。任何人都能为我提供合理的解释吗?我还可以通过派生类对象调用基类函数(参数化一个)吗?谢谢!
int main()
{
Derived d;
d.Base::fun(5);
return 0;
}
答案 0 :(得分:3)
派生函数Derived::fun()
隐藏基类中具有相同名称的所有成员。因此,您只能通过范围解析来使用基类成员。为了避免隐藏,你可以这样做:
class Derived: public Base
{
public:
int fun() { cout << "Derived::fun() called"; }
using Base::fun;
};