C++において、クラスの継承は非常に重要な概念です。
継承を使うことで、既存のクラスを拡張したり、新しいクラスを作成することができます。
しかし、初心者にとっては継承の概念が難解であることがあります。
本記事では、C++のクラスの継承について、サンプルコードも含めて解説していきます。
クラスの継承とは
クラスの継承とは、既存のクラスを基にして新しいクラスを作成することです。継承元のクラスを親クラス(または基底クラス)、継承先のクラスを子クラス(または派生クラス)と呼びます。
子クラスは、親クラスが持つメンバ変数やメンバ関数をそのまま利用できます。また、子クラスでは新たにメンバ変数やメンバ関数を追加することもできます。
例えば、以下のようなPerson(人)とStudent(学生)の2つのクラスがある場合、
class Person {
public:
std::string name;
int age;
void sayHello() {
std::cout << "こんにちは!私は" << name << "です。" << std::endl;
}
};
class Student : public Person{
};
Student
クラスは Person
クラスから派生したものであると考えることができます。この場合、Person
クラスが親クラス、Student
クラスが子クラスになります。
次に、Student
クラスに Person
クラスから継承したメンバ変数やメンバ関数を追加してみましょう。
class Student : public Person{
public:
int grade;
void rankCheck(){
sayHello();
std::cout << name << "さんの階級は" << grade << "です" << std::endl;
}
};
このようにすることで、Student
クラスでは Person
クラスから継承した name
と sayHello()
メソッドを利用しつつ、新たに grade
メンバ変数と rankCheck()
メソッドを追加することができました。
int main() {
Student member;
member.name = "山田太郎";
member.grade = 4;
member.rankCheck();
return 0;
}
こんにちは!私は山田太郎です。
山田太郎さんの階級は4です
以上が C++ の継承機能の基本的な説明です。次に具体的な使い方や注意点について解説していきます。
マルチ継承
マルチ継承とは、複数のクラスから同時に継承することを指します。
C++では、複数のクラスを親に持つ子クラスを作成することができます。
以下は、マルチ継承の例です。
#include <iostream>
using namespace std;
class A {
public:
void printA() {
cout << "This is class A." << endl;
}
};
class B {
public:
void printB() {
cout << "This is class B." << endl;
}
};
class C : public A, public B {
public:
void printC() {
cout << "This is class C." << endl;
}
};
int main() {
C obj;
obj.printA();
obj.printB();
obj.printC();
return 0;
}
この例では、A
クラスとB
クラスから派生したC
クラスを定義しています。そして、C
クラスのオブジェクトを作成し、それぞれのメソッドを呼び出しています。
実行結果は以下のようになります。
This is class A.
This is class B.
This is class C.
このように、マルチ継承を使うことで複数の親クラスから機能を受け継ぐことができます。
ただしマルチ継承は複雑化しやすいため、複雑な階層構造や重複したメソッド名などがある場合は注意が必要です。