解説:
① Sampleはメンバ変数A,Bを持つ
② SampleのインスタンスはA=1,B=2で初期化される
③ showA,showBはA,Bを画面に表示する
④ A,Bはprivateで、setもfriend関数も用意していない。従ってA,Bを書き換える方法は存在しない
class Sample{ int A; int B; public: Sample(){ A=1; B=2; } void showA(){ std::cout << "A = " << A << std::endl; } void showB(){ std::cout << "B = " << B << std::endl; } }; int _tmain(int argc, _TCHAR* argv[]) { Sample instance; instance.showA(); instance.showB(); int k; std::cin >> k; return 0; }
はずなんだが、Sampleに一切手を加えないでA,Bを編集することができる。
int _tmain(int argc, _TCHAR* argv[]) { Sample instance;
instance.showA(); instance.showB(); int k; std::cin >> k; return 0; }
意図してこれをやる人間はそうそういないと思うが、間違ってこうなっしまうケースは結構頻繁にある。そして謎の理屈でポインタがだめなやつだという烙印を押されるのである。