C++中的public,private等访问控制符并不是为了防止恶意的破坏行为,只是为 函数的封装等提供一个好的解决方案。但是有些时候,我们不得已需要突破这些访问权限,至少听说有些人面试的时候被要求这样做。








首先有个办法最简单,但是不一定可以行得通,至少是和编译器和平台相关的。就是#define private public
如果使用使用友元,也可以复制A的声明,















如果不可以使用友元来实现这一点,那么可以利用C++中的内存布局来实现,例如










也可以使用联合体的内存布局的特点来做,但实际上和上面利用强制指针转换的原理是一样的。但是这样利用内存布局的方法存在很大的局限性,因为内存布局在不同的平台都有差异,没有可移植性。当然还有内存对齐的问题。
还用一种方法就是如果原类中有模板函数的话,就可以利用提供成员模板函数特化来破坏程序的封装性
















