【问题标题】:Using all overloads of the base class使用基类的所有重载
【发布时间】:2009-10-01 11:49:28
【问题描述】:

当子类覆盖基类的方法时,所有基类的重载都不能从子类获得。为了使用它们,应该在子类中添加一个using BaseClass::Method; 行。

有没有一种快速的方法可以为所有被覆盖的方法继承基类的重载? (不需要为每个方法显式指定using ...)

【问题讨论】:

    标签: c++ inheritance overloading using-statement overriding


    【解决方案1】:

    没有。只有using 声明才有可能,并且仅适用于单个方法。

    【讨论】:

    • 我想强调using declaration。这是搜索更多详细信息的关键字,因为using 在 C++ 的几个不同上下文中使用。
    【解决方案2】:

    你可以访问基类的方法,当你想调用方法时,显式指定类的范围...

    例如

    class Base{
     public: void foo(){}
    };
    
    class Derived : public Base {
     public: void foo(int){}
    };
    
    int main()
    {
        Derived d;
        *d.Base::foo();* // like this
    }
    

    【讨论】:

      猜你喜欢
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      • 2017-05-23
      • 2017-05-26
      • 2017-05-05
      • 2013-03-11
      • 2018-10-11
      • 2023-03-17
      相关资源
      最近更新 更多