C++は禁じ手である多重継承ができます。
他言語は基本的に多重継承を禁止しています(厳密にはインタフェースを使うことで可能)。
禁止している理由としては、単純にカオスになるからです。
ちなみに僕は元々Java屋さんということもあり、多重継承死んでくれ派なんですが、やったことがなかったので試しにやってみました。
今回のソースコード
実行環境
「AWS Cloud9」です。
多重継承とは
特に説明不要な気はしますが、親クラスが複数いるパターンですね。
今回は「おとん&おかん&おれ」方式で行くので↓のような感じ。
多重継承を実装してみた
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#include <iostream> class Oton { public: void call_oton() { std::cout << "おとんやで!" << std::endl; } }; class Okan { 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_oton(); ore.call_okan(); ore.call_ore(); } |
実行してみる
1 2 3 4 5 6 7 |
Running /home/ec2-user/environment/lambda/dangling_pointer.cc おとんやで! おかんやで! おれやで! Process exited with code: 0 |
おすすめ本
これおすすめやで。
まとめ
今回多重継承をやってみたのは、単純に実装したことがなかったからです。
まあ、他言語で禁止しているってことはやるべきじゃないってことですし、やらないのが無難ですがね。
さいなら。