ときどきビックリさせられます

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 のインスタンスフィールドを全く使わないとき、このコードが問題なく(いや、問題だけど^^;)動いちゃうのにビビりました。

理屈はわかるのですが、どうも頭の中が基本部分が メッセージメタファで出来ているのよね、私のは。なので、反射的にギョッとしちゃうのです。