C++での多重継承とは何ですか?
C++では、1つのクラスが複数のクラスから継承することができます。これを多重継承と呼びます。多重継承を使用すると、複数のクラスから機能を継承できるため、コードの再利用性が向上します。
例えば、以下のような2つのクラスがあるとします。
class A {
public:
void funcA() {
cout << "Function A" << endl;
}
};
class B {
public:
void funcB() {
cout << "Function B" << endl;
}
};
これらのクラスを継承する新しいクラスを作成することができます。
class C : public A, public B {
public:
void funcC() {
cout << "Function C" << endl;
}
};
このように、クラスCはクラスAとクラスBから機能を継承しています。これにより、クラスCはfuncA()とfuncB()の両方を呼び出すことができます。
C obj;
obj.funcA(); // Output: Function A
obj.funcB(); // Output: Function B
また、多重継承を使用する場合、仮想継承を使用することもできます。仮想継承を使用すると、同じクラスを複数回継承することができます。これにより、クラス階層の中で同じクラスが複数回現れることを防ぐことができます。
class A {
public:
void funcA() {
cout << "Function A" << endl;
}
};
class B : virtual public A {
public:
void funcB() {
cout << "Function B" << endl;
}
};
class C : virtual public A {
public:
void funcC() {
cout << "Function C" << endl;
}
};
class D : public B, public C {
public:
void funcD() {
cout << "Function D" << endl;
}
};
このように、クラスDはクラスBとクラスCから機能を継承していますが、クラスAは仮想継承を使用しているため、クラス階層の中で1回だけ現れます。