2003-11-26から1日間の記事一覧

で、なにがいいたいのかと言うと

1で書いたダイアモンド継承の問題は、読んでいただければわかるとおり「ダイアモンド継承が起きる(または起きない)危険性をどこかで処理しなければならない」という点にあります。しかし、これは実装上の問題であって、プログラマ考慮する事では無いと思…

4愚痴(笑)

C++やってりゃわかると思うんですが、多重継承で実装を再利用するタイプのコードを書いてると、インターフェイスベースのJavaと違って、実装が散逸してしまって非常に可読性が低いコードが出来上がってしまいます。え? 俺が悪いの?(笑)

3複雑さ

1,2を見てもらえばお分かりかと思いますが、多重継承は(プログラマ)にとって大変複雑な物です。ただでさえツリーのように継承図が出来てしまう上に、ダイアモンド継承*1があると継承図がグラフ化してしまうためより複雑になってしまいます。正直、誰か…

2名前衝突

これは多重継承とは別に存在する問題だと思うのですが一応 複数のクラスを継承して新しいクラスを作りたいとします。この時、個々のクラスにおいて同じ名前のメンバがあった場合、名前衝突になります。実際問題として、外部からこのメソッドを呼び出しても、…

1 ダイアモンド継承の問題

クラスAから派生したクラスA1とA2があるとして、このA1とA2を多重継承したクラスBを作った場合、このような継承の形を(継承のパスがひし形になる事から)「ダイアモンド継承」と呼びます*1。 話はちょっとずれてキャストという物についてちこっと説明します…

Mix-in

C++

最近(?)のオブジェクト指向の流れの一つにMix-inという技術があるのですが、いまいちなんの役に立つのか良くわかってませんでした。言語によって"Mix-in"自体の意味も異なるようだし。で、最近Rubyの本読んでてこのMix-inの説明があり、自分的に納得でき…