ときどきビックリさせられます
C++ を仕事で再び使い始めて丸2年。いい加減慣れているはずなのに、ふとした時にまだまだビックリさせられます。
#include <iostream> class Bar { public: void piyopiyo( void ){ std::cout << "piyopiyo" << std::endl; } }; class Foo { Bar * m_bar; public: void hogehoge( void ){ m_bar->piyopiyo(); } };
Foo::m_bar が未初期化なのに、Bar::piyopiyo() が 非 virtual でかつ Bar のインスタンスフィールドを全く使わないとき、このコードが問題なく(いや、問題だけど^^;)動いちゃうのにビビりました。
理屈はわかるのですが、どうも頭の中が基本部分が メッセージメタファで出来ているのよね、私のは。なので、反射的にギョッとしちゃうのです。