【发布时间】:2019-04-20 01:30:56
【问题描述】:
我在 A 类中创建了一个函数,A 类是 B 类的基类子对象。在 B 类中,我创建了一个与 A 类中具有相同名称和签名的函数。在 B 类中的函数中,我想调用 A 类中的函数,但它不会重载。我该如何使用它?
class Document{
public:
void Input(){};
};
class Book:public Document{
public:
void Input(){this->Input();} //I want to use Document's function here
};
【问题讨论】:
-
你需要
virtual关键字来允许多态,你的当前代码有一个隐藏另一个函数。 -
注意这里没有重载,也没有重载的可能。重载的函数具有相同的名称和不同的参数列表;调用函数时,编译器会查看参数以确定要调用的重载。这里,
Input()的两个版本都没有参数,所以它们不能被重载。你的问题得到了很好的回答;我在这里的评论只是关于术语。
标签: c++ inheritance scope overloading