「Protected」の編集履歴(バックアップ)一覧はこちら
「Protected」(2017/12/01 (金) 22:05:25) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*継承によるメンバへのアクセス
[[クラス]]の章でアクセス制御について触れましたが
継承を学んだところでもう一度おさらいしておきましょう。
**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
合計 &counter(total)
今日 &counter(today)
昨日 &counter(yesterday)
*継承によるメンバへのアクセス
[[クラス]]の章でアクセス制御について触れましたが
継承を学んだところでもう一度おさらいしておきましょう。
**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
合計 &counter(total)
今日 &counter(today)
昨日 &counter(yesterday)
表示オプション
横に並べて表示:
変化行の前後のみ表示: