访问基类的私有虚函数
时间: 2023-12-19 13:05:28 浏览: 154
利用虚函数让private外部访问成为可能!
在 C++ 中,私有虚函数是不能被子类直接访问的。私有成员是类的一部分,只能由类自身的成员函数进行访问,而不能被派生类所访问。
如果你需要在子类中访问基类的私有虚函数,你可以通过公有或保护函数来间接实现。你可以在基类中提供一个公有或保护的虚函数,然后在该函数中调用私有虚函数。子类继承基类后,可以通过调用公有或保护函数来达到访问基类私有虚函数的目的。
下面是一个示例代码:
```cpp
#include <iostream>
class Base {
private:
virtual void privateVirtualFunction() {
std::cout << "Base's private virtual function" << std::endl;
}
public:
void publicVirtualFunction() {
privateVirtualFunction();
}
};
class Derived : public Base {
public:
void callPrivateVirtualFunction() {
publicVirtualFunction();
}
};
int main() {
Derived derived;
derived.callPrivateVirtualFunction();
return 0;
}
```
在上面的示例中,基类 `Base` 的私有虚函数 `privateVirtualFunction` 被公有虚函数 `publicVirtualFunction` 间接调用。然后,派生类 `Derived` 可以通过调用公有虚函数 `publicVirtualFunction` 来访问基类的私有虚函数。
请注意,这种方式只适用于通过公有或保护函数来间接访问私有虚函数。直接访问是不允许的。
阅读全文