松4氏が書いたC++コード。ちょっと変えてあるけど。
class A
{
public:
void f();
};
void A::f()
{
std::cout << "hello." << std::endl;
}
int main()
{
A a = NULL;
a->f();
return 0;
}
一見 NULL Pointer Exception が発生しそうだが,VC でも GCC でも BCC でも通る。アセンブリレベルで見ると絶対アドレスで関数を呼んでいる。なので仮想関数だったりするとアウト。コンパイラ依存ぽいけど。