C++スコーラ

Protected

最終更新:

cschola

- view
管理者のみ編集可

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

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

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
合計 -
今日 -
昨日 -
目安箱バナー