privateなメンバ変数にアクセスする
たとえメンバ変数をprivateにしていたとしてもポインタを経由すればアクセスできてしまう。
#include <iostream> using std::cout; using std::endl; class Foo { private: int num1; int num2; public: void output () { cout << num1+num2 << endl; } }; int main () { Foo foo; int* p = reinterpret_cast<int*>(&foo); *(p) = 10; // Foo::num1にアクセス *(p+1) = 6; // Foo::num2にアクセス foo.output(); return 0; }
$ main 16
馬鹿とハサミは使いようと言いますかなんというかC++におけるポインタは伝家の宝刀ですな。