【C++】クラスの継承入門 | 既存のクラスを再利用して新しいクラスを作る方法

目次

はじめに

オブジェクト指向プログラミングの三本柱の一つである「継承 (Inheritance)」は、既にあるクラスの機能(メンバ変数やメンバ関数)を受け継いで、新しいクラスを定義するための強力な仕組みです。

例えば、「乗り物」という基本的なクラスがあれば、それを継承して「車」クラスや「飛行機」クラスを作ることができます。「車」も「飛行機」も「前に進む」という「乗り物」の基本機能は共通して持っていますが、それぞれが独自の機能(例: 「車」はバックする、「飛行機」は飛行する)を追加できます。

これにより、コードの重複を避け、プログラムの再利用性拡張性を劇的に高めることができます。この記事では、C++におけるクラス継承の基本的な使い方を解説します。


クラスの継承のサンプルコード

このコードは、基本的な情報を扱う Person(人物)クラスを定義し、そのクラスを継承して、より専門的な情報を持つ Manager(管理者)クラスを作成します。

完成コード

#include <iostream>
#include <string>

using namespace std;

// --- 1. 親クラス(基底クラス)の定義 ---
class Person {
public:
    string name;
    int age;

    void introduce() {
        cout << "名前: " << name << endl;
        cout << "年齢: " << age << "歳" << endl;
    }
};

// --- 2. 子クラス(派生クラス)の定義 ---
// Personクラスのpublicなメンバを継承
class Manager : public Person {
public:
    // Managerクラス独自のメンバ
    string department;
};

int main() {
    // --- 3. 子クラスのオブジェクトを作成して使用 ---
    Manager managerA;
    
    // 親クラス(Person)から継承したメンバを設定
    managerA.name = "鈴木 太郎";
    managerA.age = 45;
    
    // 子クラス(Manager)独自のメンバを設定
    managerA.department = "開発部";
    
    // 親クラスから継承したメンバ関数を呼び出す
    managerA.introduce();
    
    // 子クラス独自のメンバにアクセス
    cout << "役職: 部長 (" << managerA.department << ")" << endl;
    
    return 0;
}

実行結果

名前: 鈴木 太郎
年齢: 45歳
役職: 部長 (開発部)

コードの解説

1. 親クラスと子クラス

  • 親クラス (Person): 継承の元となるクラスです。「基底クラス」や「スーパークラス」とも呼ばれます。
  • 子クラス (Manager): 親クラスの機能を引き継いで作られる新しいクラスです。「派生クラス」や「サブクラス」とも呼ばれます。

2. class Manager : public Person

これが、継承を行うための構文です。

  • class Manager: 新しく定義する子クラスの名前です。
  • :: コロンに続けて、継承する親クラスを指定します。
  • public Person: Personクラスをpublic継承するという意味です。public継承を行うと、親クラスのpublicなメンバは、子クラスでもpublicなメンバとして引き継がれます。これにより、main関数の中からmanagerA.nameのようにアクセスできます。

3. 継承されたメンバの利用

Managerクラスの定義の中には、nameageintroduce()といったメンバは一切記述されていません。しかし、Personクラスを継承しているため、Managerクラスのオブジェクト(managerA)は、あたかも自分自身のメンバであるかのように、これらのメンバ変数やメンバ関数を自由に使うことができます。


まとめ

今回は、C++におけるクラスの「継承」の基本を解説しました。

  • 継承は、既存のクラスの機能を再利用して、新しいクラスを作る仕組み。
  • class 子クラス名 : public 親クラス名 という構文で定義する。
  • 子クラスは、親クラスのpublicなメンバを、自分のものとして利用できる。

継承は、オブジェクト指向におけるコードの再利用性を高めるための中心的な機能です。共通の機能を親クラスにまとめ、個別の機能を子クラスに持たせることで、効率的で拡張しやすいプログラムを設計できます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次