アカウント名:
パスワード:
ぜんぶ作って抱え込めばいいじゃん。
C++ のWebフレームワークやってますって人誰か居ないかね。普通に使えるよー、とかやっぱマゾですわー、とか聞いてみたい。
???「C++、聞こえていたら君の生まれの不幸を呪うがいい」???「君は良い言語だったが、多重継承がいけないのだよ」
よくC++は多重継承が・・・って言う人いますけどJavaのインターフェースは多重継承の一種なんですよね。
継承に関してC++にあって(7以前の)Javaに無いのは実装の多重継承だけで、型の多重継承とでも言うべきインターフェースの多重継承はJavaも許しています。多重継承の欠点として関数名の衝突やダイヤモンド継承がよく挙げられますが、これらはインターフェースを通してJavaでも起こり得ることです。
そこでJavaは実装の継承を一つに限ることで問題を回避しようとしているわけですが、一般に同名関数の意味が一致することは期待できないはずです。例えば、ゲーム内の車両を
C++の多重継承でメンバ関数のオーバーライドなんてコンパイラが検出できるからあまり大した問題ではなくて、メンバ変数を複数持ってしまうことの方が大問題じゃないかな。
メモリが無駄、というのもあるけど親クラスのメンバ関数呼んだときに経路によって違うメンバ変数を操作するからね。一方由来のメンバ関数でメンバ変数書き換えたはずなのにもう一つのクラス由来のメンバ関数で値読み出したら反映されてない、とか普通に起こるし。
# 仮想継承すれば解決。。。とも事実上言い切れないんだよな。# 故にJavaはインタフェース継承のみにしたんだろう。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
コンピュータは旧約聖書の神に似ている、規則は多く、慈悲は無い -- Joseph Campbell
男は黙ってC++ (スコア:0)
ぜんぶ作って抱え込めばいいじゃん。
Re: (スコア:0)
C++ のWebフレームワークやってますって人誰か居ないかね。
普通に使えるよー、とかやっぱマゾですわー、とか聞いてみたい。
Re: (スコア:0)
???「C++、聞こえていたら君の生まれの不幸を呪うがいい」
???「君は良い言語だったが、多重継承がいけないのだよ」
Javaは多重継承を許している (スコア:2, すばらしい洞察)
よくC++は多重継承が・・・って言う人いますけど
Javaのインターフェースは多重継承の一種なんですよね。
継承に関してC++にあって(7以前の)Javaに無いのは実装の多重継承だけで、
型の多重継承とでも言うべきインターフェースの多重継承はJavaも許しています。
多重継承の欠点として関数名の衝突やダイヤモンド継承がよく挙げられますが、
これらはインターフェースを通してJavaでも起こり得ることです。
そこでJavaは実装の継承を一つに限ることで問題を回避しようとしているわけですが、
一般に同名関数の意味が一致することは期待できないはずです。
例えば、ゲーム内の車両を
Re:Javaは多重継承を許している (スコア:0)
C++の多重継承でメンバ関数のオーバーライドなんてコンパイラが検出できるから
あまり大した問題ではなくて、メンバ変数を複数持ってしまうことの方が大問題じゃないかな。
メモリが無駄、というのもあるけど親クラスのメンバ関数呼んだときに経路に
よって違うメンバ変数を操作するからね。一方由来のメンバ関数でメンバ変数書き換えたはずなのに
もう一つのクラス由来のメンバ関数で値読み出したら反映されてない、とか普通に起こるし。
# 仮想継承すれば解決。。。とも事実上言い切れないんだよな。
# 故にJavaはインタフェース継承のみにしたんだろう。