C++的一个"肮脏技巧"是做类似的事情:
#define private public
#include "ClassHeader.h"
// now all the private members of the included class are public
Run Code Online (Sandbox Code Playgroud)
我强烈建议你不要这样做.
你可以:
你想做什么?如果某些东西是私人的,请不要乱用它.这是私人的原因.
只需将其转换,转移内存并退回.(没有编译代码,但你应该得到这个想法).
class Bla
{
public:
Bla() : x(15), str("bla") {}
private:
int x;
std::string str;
}
int main()
{
Bla bla;
int x = *((int*)(&bla));
std::string str = *((std::string*)((int*)(&bla) + 1));
std::cout << x << str;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
由于这是一个面试问题,我不会讨论为什么你不应该这样做.:)
编辑:具有虚函数的类也将在那里的某处具有虚拟表指针.我不确定是否会给你第一个数据成员的地址或地址.
默认情况下,对齐方式为4(右?),因此如果您正在阅读的成员未对齐,请移动2个字节以转到下一个字节.