多重継承を禁止したらJava以下じゃないか!

C++を使っていると、たまに「よくわからないから多重継承は禁止」とかいう規約があることがある。

……馬鹿じゃないかしら。

とまでは言わないわけだけれども、
C++から多重継承を取り上げたら、Javaの継承よりも弱くなっちゃうじゃないか!

くらいは言いたい。


そう、多くの場合多重継承禁止という事は即ち「インターフェイスも禁止」ってことだ。

Ω ΩΩ<な、なんだってー!

Javaでインターフェイス禁止とか言われたら正気の沙汰ではないと思われるに違いないが、
C++ではそういう事があり得るから困る。


要するに多重継承とは危険なものだ、
というどこからか聞きつけてきた知識がそうさせるのか、
本人がよく理解してないからかはわからないが、
別にいいじゃんねえ。
継承関係は見ればわかるし、
メモリの配置くらいイメージすればいいじゃん。


元々ルートオブジェクトが存在しないC++において
多重継承を奪われると残るのはルートを持たない異なる根を持つ単一継承でしかない。


即ち、各個に対し適切なルートとなるオブジェクトを設計しなければ抽象化の妨げになる。
が、考えもなく多重継承を禁止するような人がそうできる筈もない。


確かに多重継承は意味不明な継承関係を作り上げる可能性を持つ武器ではなるけれども、
C++にとって、最も重要で最も欠かせない武器でもあるのだと思う。

だのになんだって禁止しちゃうのかねえ。