>>33
> なぜか関数func内でアクセスできてしまうんですよね。
> どうしてなんでしょうか?
C++ だとポインタは、実際には(実装依存だけど、ふつーは)単なるアドレス値
だから。

> コンパイルエラーを出すべきところではないのでしょうか?
そのぐらいの簡単なケースなら、警告レベルを上げれば警告してくれると思う
けど(変数を初期化せずに使用しています、とか何とか)。

ただ、一般論としては難しい。

void foo(Class* p)
{
  p->func();
}

これで p が有効なオブジェクトを指しているかどうかを毎回チェックすると、
無視できないコストが発生するから。Java のように GC 前提の言語なら
null check だけで済むけど。