在基类中重载的函数,派生类可以重定义所继承的0个或多个版本。如果派生类想通过自身类型使用的重载版本,则派生类必须要么重定义所有重载版本,要么一个也不重定义。但有时类需要仅仅重定义一个重载集中某些版本的行为,并且想继承其它版本的含义。这时,可以用using声明讲基类所有的重载实例加载到派生类中,派生类只需要重定义需要的版本。
#include <iostream>
class A
{
public:
void get(int a){std::cout << "This is A1" << std::endl;}
void get(){std::cout << "This is A2" << std::endl;}
};
class B:public A
{
public:
void get(){std::cout << "This is B" << std::endl;}
using A::get;
};
int main(void)
{
B b;
b.get();
b.get(2);
return 0;
}
运行结果:
This is B
This is A1