protectedの使い方について – 固定ページ 2 – プログラミング – Home

protectedの使い方について
 
通知
すべてクリア

[解決済] protectedの使い方について

固定ページ 2 / 2

くたくた
 くたくた
(@くたくた)
ゲスト
結合: 23年前
投稿: 119
 

>なぜ、上のではダメだったのかが少し気になりました。
protectedはそういう仕様なのだと思います。
感覚的には「参照規制緩和版」privateという感じです。

規制緩和対象になる為の条件が
「派生クラスコード内における、その派生クラスインスタンス」
な訳です。

この為、BクラスインスタンスのA::protectedメンバは 条件に合致する為、参照OKに
なります。

一方、AクラスインスタンスのA::protectedメンバは 条件に合致しない為、参照NGに
なります。

こんな感じです。


返信引用
はまち
 はまち
(@はまち)
ゲスト
結合: 23年前
投稿: 146
Topic starter  

みなさん、お返事、ありがとうございました。
初めの書き込みで、間違えてm_dataをBクラスに記述してしまったので、とてもわかりにくい説
明になってしまっいました。すみません。

私は、dairygoodさんが言うように、
>普通「protectedメンバはそのクラスと派生クラスからアクセス可能」
ということはすべて
>「クラスAを継承すると、Aのm_dataにアクセスできるようになる」
と考えていました。こう宣言すれば、Aのm_dataメンバがどちらのクラスのメンバか一切意識せ
ずに使えると思っていました。でも、実際は、関数のインターフェイスの書式では、引数として
持たせる場合、基本クラスの型ではなく、派生クラスの型を宣言しなくてはいけませんでした。
全く同じように使えるはずなのに、どうしてここでは、派生クラスの型として宣言しなくてはい
けないのだろう、ということがわからなかったところです。

ですが、dairygoodさんの指摘するように、確かに、基本クラスの型を宣言できると、親子関係
にない別のクラスのprotected関数をも呼び出せてしまうのですね。だいぶ納得しました。よ
く、コンストラクタをオーバーロードしているクラスからクラスを派生することがよくあるので
すが、これからは、これらに気をつけていけそうです。ありがとうございました。


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました