>>723
> C/C++ だとクラス名として登録された識別子 Shape を関数名 Shape() として宣言できない

メンバ関数を class Shape Shape() って書けばできるよ。
そのクラスおよび派生クラスの中でクラス名を指すときは全部 class Shape って
書かないといけなくなるけどね。