在C++中,当你想要通过一个指向派生类的指针调用受保护的基类方法时,你可以使用static_cast
将指针转换为基类类型。这样,你就可以访问基类的受保护成员了。以下是一个示例:
#include<iostream>
class Base {
protected:
void protectedMethod() {
std::cout << "Base::protectedMethod() called"<< std::endl;
}
};
class Derived : public Base {
public:
void callProtectedMethod() {
// 使用 static_cast 将派生类指针转换为基类指针
Base* basePtr = static_cast<Base*>(this);
basePtr->protectedMethod();
}
};
int main() {
Derived derived;
derived.callProtectedMethod();
return 0;
}
在这个示例中,我们定义了一个基类Base
和一个派生类Derived
。基类中有一个受保护的方法protectedMethod()
。在派生类中,我们定义了一个名为callProtectedMethod()
的方法,该方法使用static_cast
将this
指针转换为基类指针,然后调用protectedMethod()
。
运行这个程序,你会看到以下输出:
Base::protectedMethod() called
这表明我们成功地通过派生类指针调用了基类的受保护方法。
领取专属 10元无门槛券
手把手带您无忧上云