新プログラミング言語『Zero』を開発しました! 本サイトの記事数は「589」!!

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

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

 

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

 

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

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

 

僕のプロフィールはこちら

 

 

今回のソースコード

■GitHub

URL:「https://github.com/izumin0401/cc/blob/master/diamond_inheritance.cc」

 

 

実行環境

AWS Cloud9」です。

■サポート言語

URL:「https://docs.aws.amazon.com/ja_jp/cloud9/latest/user-guide/language-support.html」

 

 

ダイアモンド継承とは

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

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

ダイヤモンド継承

 

 

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

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

 

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

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

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

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

 

 

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

こんな感じ。

 

 

Advertisement

 

実行してみる

問題なく実行されていますね。

おわり!

 

 

Advertisement

 

おすすめ本

これおすすめやで。

 

 

 

まとめ

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

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

さいなら。

Travelerを知らないの?