最近読んだ『C++のためのAPIデザイン』という本に興味深い技法が紹介されていてちょっと感動したので備忘録。 きっかけ C++で、あるクラスのヘッダを以下のように書いたとしましょう。 MyClass.h #ifndef MyClass_h #define MyClass_h class MyClass { public: MyClass(); virtual ~MyClass(); private: // API利用者に使わせたくない関数 void privateFunc(); }; #endif このとき、MyClassの利用者には「privateFunc()」というメンバ関数の存在が丸見えになってしまっています。 利用者は人様が作ったクラスのアクセス指定子を無効化する手段を持っているため、たとえば以下のように書くと、なんとMyClassの外側から合法的にprivateメンバにアクセスで