【发布时间】:2009-10-01 11:49:28
【问题描述】:
当子类覆盖基类的方法时,所有基类的重载都不能从子类获得。为了使用它们,应该在子类中添加一个using BaseClass::Method; 行。
有没有一种快速的方法可以为所有被覆盖的方法继承基类的重载? (不需要为每个方法显式指定using ...)
【问题讨论】:
标签: c++ inheritance overloading using-statement overriding
当子类覆盖基类的方法时,所有基类的重载都不能从子类获得。为了使用它们,应该在子类中添加一个using BaseClass::Method; 行。
有没有一种快速的方法可以为所有被覆盖的方法继承基类的重载? (不需要为每个方法显式指定using ...)
【问题讨论】:
标签: c++ inheritance overloading using-statement overriding
没有。只有using 声明才有可能,并且仅适用于单个方法。
【讨论】:
using declaration。这是搜索更多详细信息的关键字,因为using 在 C++ 的几个不同上下文中使用。
你可以访问基类的方法,当你想调用方法时,显式指定类的范围...
例如
class Base{
public: void foo(){}
};
class Derived : public Base {
public: void foo(int){}
};
int main()
{
Derived d;
*d.Base::foo();* // like this
}
【讨论】: