>>228
integerとpointerは暗黙変換できませんでした。最初から確認すればよかったね。
具体的にはVC++6.0では以下の文はそれぞれエラー(C2440)でした。
char *p = 0x10000;
int n = p;

0リテラルがnull pointerっつーのは、Cとの互換を考えると仕方ないとも思うけど、
言語仕様としては望ましくないと思うね。

subtype関係にあるclass同士ってのは、どういうこと?以下のクラスがある時に
class Foo {..};
class Goo: public Foo {...};

Foo f = Goo(..); のとき?これはトラブルの元になりやすいから、暗黙変換を禁止
していいんじゃないかなぁ。

Foo *p = new Goo(..); は 「Goo型へのポインタ」という組み込み型から「Foo型への
ポインタ」という組み込み型への変換だよね。で、C++では許されている暗黙変換なので、
これはOKだと思う。参照も同じだよね。