本記事では、クラスの実装などでよく使う 「protected」 について解説していきます。
protectedとは?
簡単に説明すると、 「別のクラスで変数をアクセスさせたくないが、継承しているクラスにはアクセス出来るようにしたい」 といった際に使われるアクセス指定子です。
c++のアクセス指定子である 「public」 や 「private」 の中間的な役割を持つ存在です。
それぞれの意味
それぞれのアクセス指定の意味をもう少し分かりやすくするために
下記の様な例を書いておきます。
//基底クラス
class Base
{
//publicは基底クラスでも、派生クラスでもどこでもアクセスできる。
public:
int a = 1;
//protectedは基底クラスと基底クラスを親としている派生クラスでしかアクセスできない。
protected:
int b = 2;
//privateはそのクラスの中でしかアクセスができない。
private:
int c = 3;
};
//基底クラスを継承した派生クラス
//ここで使えるのはpublicとprotectedを使った変数だけです
class Derivative : public Base
{
//継承している基底クラスがBaseなので、この中では変数のaとbがアクセスできます。
};
//この派生クラスの場合は上記の基底クラスとは違う別のクラスを親にしています。
class Derivative : public Character
{
//この場合はpublicの変数であるaしかアクセスできません。
};
この様に、アクセス指定子である 「protected」 は基底クラス内もしくは、特定の基底クラスを継承していないと、その変数を使えないようにしたい時に便利です。
皆さんも是非使ってみてください!