日々更新中です!

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

  • URLをコピーしました!
悩んでいる男の子

C++のダイヤモンド継承がよく分からないから教えてほしんだけど。。
具体的なソースコードもあると嬉しいな。

こんな悩みを解決します。

  • 本記事の内容
  • ダイヤモンド継承とは?
  • ダイヤモンド継承のダメな例
  • ダイヤモンド継承の具体的なソースコード
  • 本記事の執筆者
プロフィール
いずみん(どこの写真だよ)
  • 元エンジニア(歴7年)、資格保有数約20個(IT系以外も含む)
  • 物販月利50万円⇒脱サラ
  • 物販、システム開発、アフィリエイト、プログラミング、投資をやっています。
  • 物販は彼女と楽しみながらやっています!

今回は、C++のダイヤモンド継承を解説します。

いずみん

すぐ読み終わるので、是非最後まで読んでみてください!

説明をより分かりやすくするために、 ダイヤモンド継承を「神&おとん&おかん&おれ」で実践してみます。

目次

実行環境

今回は「AWS Cloud9」を利用します。

いずみん

実行できる環境であれば何でもOKです!

ダイアモンド継承とは

ダイヤモンド継承とは、あるクラスに対して親クラスが複数あり、さらにその上に親クラスがある継承のことです。

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

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

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

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

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

ということで、早速実装してみます。

#include <iostream>

class God {
    public: 
        void call_god() {
            std::cout << "ゴッドやで!" << std::endl;
        }
};

class Oton : virtual public God {
    public: 
        void call_oton() {
            std::cout << "おとんやで!" << std::endl;
        }
};

class Okan : virtual public God {
    public: 
        void call_okan() {
            std::cout << "おかんやで!" << std::endl;
        }
};

class Ore : public Oton, public Okan {
    public: 
        void call_ore() {
            std::cout << "おれやで!" << std::endl;
        }
};

int main() {
    Ore ore;
    ore.call_god();
    ore.call_oton();
    ore.call_okan();
    ore.call_ore();
}

意外と簡単ですね。

実行してみる

先ほどのソースコードを実行してみます。

Running /home/ec2-user/environment/lambda/dangling_pointer.cc
ゴッドやで!
おとんやで!
おかんやで!
おれやで!


Process exited with code: 0

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

まとめ

今回は、C++のダイヤモンド継承について図を交えて解説しました。

個人的にダイヤモンド継承は嫌いですが、何でも自分で実装してみないと分からないですね。

ではまた!

まとめ
  • ダイヤモンド継承とは、あるクラスに対して親クラスが複数あり、さらにその上に親クラスがある継承のこと。
  • 仮想基底クラスは、ソースコードでは「virtual」で表現する。
  1. おススメ本はこちら!
¥3,718 (2022/04/19 20:17時点 | Amazon調べ)
いずみん

僕は↑の本でC++の勉強をしました!
非常に分かりやすいので是非!

  • 関連記事
  • 自由な生き方がしたいなら!

自由な生き方をするためには、稼ぐスキルを身に付けなければなりません。

当サイト「リバトレ」では稼ぐスキルに関する情報を日々発信しているので、興味のあるものから見て頂ければ嬉しいです。

この記事が気に入ったら
いいね または フォローしてね!

シェアするんやで!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

いずみんのアバター いずみん 自由大好きおじ

自由大好きおじ | 物販月利50万達成⇨脱サラ | 物販(アパレルせどり)・アフィリエイト・プログラミング・投資に関する情報を発信中 | 元エンジニア | 保有資格約20個

コメント

コメントする

目次
閉じる