通过派生类对象调用基类函数
Calling a Base Class Function through Derived Class Object
为什么编译器不通过派生类对象调用基类函数(参数化的函数)?派生类从基类继承函数,对吧?
#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;
}
派生函数Derived::fun()
隐藏基类中所有同名的成员。因此,您只能通过作用域解析来使用基类成员。要避免隐藏,可以这样做:
class Derived: public Base
{
public:
int fun() { cout << "Derived::fun() called"; }
using Base::fun;
};
相关文章:
- 使用基类指针调用基类的值构造函数的语法是什么?
- 在初始化列表之外手动调用基类的构造函数
- 继承:调用基类的成员和方法
- 在成员构造函数之后调用基类构造函数
- C++初始化之前派生类调用基类的方法
- 如何在具有相同函数名称的派生类中调用基类的函数
- 有没有办法在C++中调用基类的所有子类函数?
- C++:在派生类成员上调用基类方法
- 添加字符串类型的类成员会导致调用基类函数而不是子函数
- 有没有办法调用基类函数,该函数在使用私有继承的派生类中被覆盖?
- 如何在C++中调用基类虚函数
- 如何让派生类在调用基类之前执行操作?
- 在调用基类之前需要在成员上调用方法
- 调用基类克隆实现
- 在派生类中调用基类方法,而无需指定基类名称
- 从参数包中派生的调用基类运算符 =
- 当应该调用派生类方法时,为什么要调用基类方法
- 调用基类函数时强制使用类名?
- 无法从派生的一个方法调用基类方法
- 当派生类无法轻易将参数传递到基类时,如何调用基类构造函数