やっほー
ダイヤモンド継承

【C++】ダイヤモンド継承を「神&おとん&おかん&おれ」で実践してみた件

前回、多重継承に関する記事を書きました。

前回記事

C++は禁じ手である多重継承ができます。 他言語は基本的に多重継承を禁止しています(厳密にはインタフェースを使うことで可能)。 禁止している理由としては、単純にカオスになるからです。 ちなみに僕は元々Java屋さんというこ[…]

多重継承

 

で、どうせならダイヤモンド継承(俗に菱形継承と呼ばれる)もやってみようではないかと。

てことで今回は、ダイヤモンド継承を「神&おとん&おかん&おれ」で実践してみます。

今回のソースコード

実行環境

AWS Cloud9」です。

ダイアモンド継承とは

親クラスが複数いて、その上にさらに親クラスがいるパターンですね。

今回は「神&おとん&おかん&おれ」方式で行くので↓のような感じ。

ダイヤモンド継承

ダイヤモンド継承のダメな例

ダメな例というか、うまくいってない例ですね。

 

ダイヤモンド継承_悪い例

これだと、Godが2体いることになるので、OreはどちらのGodを呼べばよいか分かりません。

これを回避するために、Godを「仮想基底クラス」として定義します。

ソースコードでは「virtual」を付けます。

ダイヤモンド継承を実装してみた

こんな感じ。

実行してみる

問題なく実行されていますね。おわり!

おすすめ本

これおすすめやで。

まとめ

ダイヤモンド継承なんてやった日にゃ、もうカオスでしかないですね。

まあこういうのも実際に実装してみないとイメージ湧かないもんなんでやってみました。

さいなら。

ダイヤモンド継承
フォローしてもらえると泣いて喜びます