c++ - 为什么派生类的重载函数隐藏了基类函数?

标签 c++ inheritance

<分区>

考虑以下代码:

class Base
{
public:

    void Fun()
    {
    }
};

class Derived : public Base
{
public:

    void Fun(int x)
    {
    }
};

int main()
{
    Derived d;
    d.Fun(5);
    d.Fun();    // Compilation error
}

在编译时,编译器提示没有采用零参数的 Fun() 版本。为什么会这样?如果基类和派生类中的函数签名匹配,我可以理解编译器隐藏基类版本,但是如果它们采用不同的参数/不同的参数,为什么编译器无法解析这两个函数。参数?

最佳答案

你必须在派生类中创建函数体

void Fun()
{
}

编译时首先检查派生类中的函数体。

关于c++ - 为什么派生类的重载函数隐藏了基类函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22802479/

相关文章:

c++ - 无论如何,是否允许一个应用程序线程在 GDB 中的断点处继续运行?

c++ - 将 boost::asio::ip::address_v4 隐藏为字符串

java - 循环继承使用

Java,接口(interface)可以继承吗?

c++ - 错误:在C++中没有用于调用构造函数的匹配函数

C++根据成员 bool 值对 vector 中的对象进行排序

c++ - 返回类型与返回类型 (operator++) 不相同也不协变

c++ - 深入了解 C++ protected

C# 静态成员 "inheritance"- 为什么它存在?

java - 访问抽象类方法