在C++中,方法隐藏(Method Hiding)是指派生类中定义了一个与基类中名称相同但返回类型、参数列表或访问修饰符不同的成员函数。这种情况下,派生类中的成员函数会隐藏基类中的同名成员函数,而不是重载它。
要实现方法隐藏,你需要确保派生类中的成员函数与基类中的成员函数具有相同的名称、返回类型和参数列表。以下是一个简单的示例:
#include <iostream>
class Base {
public:
virtual void foo() {
std::cout << "Base::foo()" << std::endl;
}
};
class Derived : public Base {
public:
void foo() override { // 使用override关键字明确表示重写基类的虚函数
std::cout << "Derived::foo()" << std::endl;
}
};
int main() {
Base* basePtr = new Derived();
basePtr->foo(); // 输出 "Derived::foo()",因为Derived::foo()隐藏了Base::foo()
delete basePtr;
return 0;
}
在这个示例中,Derived
类中的foo()
函数隐藏了Base
类中的foo()
函数。当我们通过Base
类的指针调用foo()
函数时,实际上调用的是Derived
类中的foo()
函数。注意,我们在Derived::foo()
函数前使用了override
关键字,这有助于编译器检查我们是否正确地重写了基类中的虚函数。