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++におけるポインタは伝家の宝刀ですな。