【问题标题】:C++ inheritance+overloading [duplicate]C ++继承+重载[重复]
【发布时间】:2014-06-22 18:11:22
【问题描述】:

在以下代码中:

struct X{ 
    void stream(int){} 
};
struct Y : public X{
    void stream(int, int){}
};

int main()
{
    Y y;
    y.stream(2);
}

为什么X::stream(int) 没有被继承?

或者用Y::stream(int, int) 隐藏。如果是这样,为什么它隐藏而不是覆盖?

【问题讨论】:

  • 派生类成员函数隐藏同名的基类成员函数,而不管签名。某处一定有一个副本......
  • @chris 但是没有不明确的电话。

标签: c++


【解决方案1】:

派生类中的名称确实隐藏了基类中的相同名称。这是故意的。如果基类发生变化,您不会突然想在派生类中看到不同的重载集。

要显式取消隐藏基名称,请将using X::stream; 添加到派生类中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 2020-06-08
    • 2015-07-30
    • 2012-02-07
    • 1970-01-01
    • 2013-04-25
    相关资源
    最近更新 更多