- - PR -
JavaとC++のオーバーライドの違いついて
«前のページへ
1|2|3
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-12-13 02:23
class B に method2 を実装しなければよいのでは?
そういうことではない?(^^; | ||||
|
投稿日時: 2006-12-13 02:36
本題とはまったく関係ないですが。
このコードではデストラクションが定義されていないしキャストもしていないので、正常に動いていますが、継承するクラスのデストラクタは必ずvirtualにしたほうがいいです(virtual ~Aをやれば~Bはいらなかったかも)。
ちいにぃさんが薦めておられますが、Effective C++, More Effective C++の内容だけは目を通されたほうがよろしいと思います。落とし穴とか危険なこととか丁寧に書いてありますから。 というか通さないと多分むしろ危険です。 # そして何でC++が嫌がられるか理解すると。 | ||||
|
投稿日時: 2006-12-13 12:50
まぁ、C++ でもその設計は不味いですよね。同じ名前のメソッドを定義するのは。
class A の method2 を final にしたら、C++ と挙動が同じになるはずですが、不味い設計なので多分コンパイルエラーにしてくれます。 _________________ 囚人のジレンマな日々 | ||||
|
投稿日時: 2006-12-13 13:06
'最終メソッド' を再定義しているので、コンパイル エラーになります。 設計的にまずいので言語仕様として禁止しているのかどうかは、設計者のみぞ知るところですが。 ちなみに、C# | VB だと 「new | Shadows つけろ!」 とか言われますよね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-12-13 13:34
みなさんお返事ありがとうございます。
自分が勉強不足だという事を痛感しました。 C++だけでなく、Javaの方も勉強になりました。 やっぱりプログラミングは奥が深いですね。 私が、モノを知らないだけですが; ありがとうございました。 [ メッセージ編集済み 編集者: くれよん 編集日時 2006-12-13 13:37 ] |
«前のページへ
1|2|3