|
===================================== 〔語彙分解〕的な部分一致の検索結果は以下の通りです。 ・ 仮 : [かり] 1. (n,adj-no) temporary 2. provisional 3. informal 4. unauthorized 5. unauthorised 6. fleeting 7. assumed (name) 8. interim 9. acting ・ 仮想 : [かそう] 1. (n,vs) imagination 2. supposition 3. virtual 4. potential (enemy) ・ 想 : [そう] 【名詞】 1. conception 2. idea 3. thought ・ 継承 : [けいしょう] 1. (n,vs) inheritance 2. succession 3. accession
仮想継承(かそうけいしょう、)とは、C++プログラミング言語における継承の一種で、多重継承によって生じる問題(菱形継承問題)を解決するもの。どの上位クラスのメンバーを使うか曖昧さが生じる部分で、明確化する。仮想継承は、部分の合成という意味での継承よりも、継承が上位クラスへの制限を表している場合に使われる。多重継承の基底クラスは、 virtual というキーワードで仮想継承であることを指定される。== 問題 == 次のようなクラス階層を考える。 bat の eat() メソッドを呼び出した場合、どうなるだろうか? 上の宣言では bat.eat() の呼び出しは曖昧である。bat.WingedAnimal.Animal::eat() なのか bat.Mammal.Animal::eat() なのか判らない。問題は、いわゆる多重継承の意味論が現実をモデル化したものではない点にある。感覚的に言えば、Animal が Animal でしかないように、Bat は Mammal であると同時に WingedAnimal である。しかしBat (こうもり)のMammal (哺乳類)性におけるAnimal (動物)性は、WingedAnimal (翼のある動物)性におけるAnimal (動物)性と同じである。このような状況を菱形継承と呼び、これを解決するのが仮想継承である。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「仮想継承」の詳細全文を読む スポンサード リンク
|