C++にしばらく触れていないと、忘れてしまうことが多いので、まとめました。
(public継承, protected継承, private継承)
各継承の種類の動作
public継承
基本クラスの公開メンバ(public)をそのまま公開メンバとして継承する。
protected継承
基本クラスの公開メンバと被保護メンバ(protected)が、被保護メンバとして継承される。
(被保護メンバとは、派生クラスからもアクセスできる非公開メンバのこと。)
private継承
基本クラスのメンバが派生クラスの非公開メンバ(private)として継承される。
実際の動作
各継承の種類とメンバの種類の動作の組み合わせを、表にすると、下記のようになります。
それぞれの列のタイトルは、下記のコードのそれぞれの部分を意味しています。
(コードのコメントに記載)
#include <iostream>
class Base {
public: // 1. 「public」を「アクセス指定子」と呼ぶ
std::string str = "Hello World";
};
class Derived : public Base { // 2. 「public」を「継承の種類」と呼ぶ
public:
void printPublicStr()
{
// 3. 「派生クラスから基底クラスのメンバにアクセスしている」と表現する
std::cout << str << std::endl;
}
};
int main(void)
{
Derived derived;
// 4. 「派生クラスのオブジェクトを用いて外部からアクセスしている」と表現する
std::cout << derived.str << std::endl;
return 0;
}