LIFE LOG(ここにはあなたのブログ名)

あつあつ備忘録

ソフトやハード、時にはメカの備忘録をまとめていきます

【C++】継承①

f:id:AtsuyaKoike:20190524095847p:plain:w300

  • 継承をすることで、最も汎用的なクラスから、最も特化されたクラスへの流れを示すクラス階層を作成できる。
  • あるクラスを別のクラスが継承するとき
    • 継承される側のクラスを 基本クラス と呼ぶ
    • 継承する側のクラスを 派生クラス と呼ぶ
#include <iostream>
using namespace std;

class B { 
    int i;
public:
    void set_i( int );
    int get_i();
};

class D : public B {
    int j;
public:
    void set_j( int );
    int mul();
};

void B::set_i( int n ) {
    i = n;
}

int B::get_i() {
    return i;
}

void D::set_j( int n ) {
    j = n;
}

int D::mul() {
    return j * get_i();
}

int main() {
    D ob;

    ob.set_i( 10 );
    ob.set_j( 4 );

    cout << ob.mul() << endl;

    return 0;
}
  • mul()に注目
    • 特にオブジェクトにリンクすることなく、Bクラスのメンバであるget_i()を呼び出している。
    • mul()では非公開メンバのiにアクセスできないため、get_i()関数を呼び出す。

コンパイル

$ g++ -o study52 study52.cpp

実行

$ ./study52 
40

引用・参考はこちら

f:id:AtsuyaKoike:20190524100759j:plain:w200
独習C++ 第4版 https://www.amazon.co.jp/dp/4798119768