継承によるメンバへのアクセス

クラスの章でアクセス制御について触れましたが
継承を学んだところでもう一度おさらいしておきましょう。

public

public修飾子がつけられたメンバは
そのクラス
派生クラス
クラスを使う側
のどこからでもアクセスできます。
class Person{
public:
     string name;
}

private

private修飾子がつけられたメンバはそのクラスからのみアクセスできます。
つまり、継承した派生クラスからはアクセスできないのです。
もちろんクラスを使う側からも見えません。
class Person{
private:
     string name;
}

protected

まだ触れていない protected というキーワードがあります。
このアクセス範囲は
そのクラスと
それを継承した派生クラス
からのみアクセスできます。
また、継承を何度繰り返しても性質は子に受け継がれます。
class Person{
protected:
     string name;
}

class Student : public Person{
}
この例において
Student は nameにアクセスすることができます。
クラスを使う側からはPersonのnameもStudentのnameも private と同様アクセスできません。


デフォルト

C++では
アクセス修飾子を何も指定せずに定義すると、private として扱われます。
class Sample
{
    int num;
    void hoge();
};
この num と hoge() はprivateです。

問題

問題1

継承の章で作成したPersonクラスとStudentクラスにおいて、
メンバ変数を全て protected にせよ。
また、全てprivate にした場合の動きも確認せよ。

testcounter
合計 -
今日 -
昨日 -