有时候想要访问别人封装好的代码(第三方库)中的私有成员,而第三方库中有没有相应的public接口让你去访问,这时候可以这么做:
#include <iostream>
using namespace std;
class A
{
private:int x = 3;
};
class B
{
public:int x = 1;
};
int main()
{A a;B* b = (reinterpret_cast<B*>(&a));std::cout << (b->x) << std::endl;//输出3return 0;
}
本质上成员的保护权限是编译时去判定的,而在运行时去强行访问私有成员变量那就可以绕过编译时的保护权限约束了。