33章 多重継承

http://www.geocities.jp/ky_webid/cpp/language/033.html

複数のクラスからサブクラスを定義することを多重継承といいます。今までやっていた継承は一つだけだったので単一継承と呼びます。

書き方は下記のような感じです。

class CSub : public CSuper1, public CSuper2

とりあえず実装してみましょう。

#include <iostream>
using namespace std;

class CSuperNum {
public:
    void SetNum (int num) { m_num = num; }
    int GetNum () const { return m_num; }
private:
    int m_num;
};

class CSuperData {
public:
    void SetData (int data) { m_data = data; }
    int GetData () const { return m_data; }
private:
    int m_data;
};

class CSub : public CSuperNum, public CSuperData {
public:
    CSub (int num,int data) {
        SetNum(num);
        SetData(data);
    }
    void output () {
        cout << GetNum() << endl;
        cout << GetData() << endl;
    }
};

int main() {
    CSub obj(100,200);
    
    obj.output();
    
    return 0;
}
$ main
100
200

とっても簡単ですね。普通の継承となんら変わりません。

ただし、実を言うと多重継承にはその簡単な記述方法とは裏腹に非常に複雑な問題があります。

それは次回に。