C++で菱形継承をするとき、たとえば解説の例でよくある
A ↗ ↖ B C ↖ ↗ D
という構成のきれいなダイヤモンド継承関係であれば、
C++
1class B: virtual public A {} 2class C: virtual public A {}
と仮想基底クラスを継承する宣言をすることで、DはAのメンバを二重に持たずにすみます。
では、こういうのはOKでしょうか?
もともと
A ↗ B
というクラスライブラリが存在したとして
A ↗ ↖ B C ↖ ↗ D
C,Dをユーザが実装するという構造の場合、
C++
1class D: virtual public B, public C {} 2class C: virtual public A {}
という継承宣言でもメンバ重複を避けられるものでしょうか? かたやB、かたやAを仮想継承していますが目的は共通部分であるAの重複を避けることです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/10/07 02:26
2015/10/07 03:57