【问题标题】:How can inherited functions with the same name get treated as overloaded functions?如何将具有相同名称的继承函数视为重载函数?
【发布时间】: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


【解决方案1】:

您可以使用基类名称显式引用它:

void Input(){Document::Input();}

【讨论】:

    猜你喜欢
    • 2011-07-19
    • 1970-01-01
    • 2023-03-03
    • 2013-08-01
    相关资源
    最近更新 更多