- 締切済み
protected と friend の区別(C++)
protected と friend はともに情報隠蔽の「抜け道」であるが、両方は大な違いがあるんですけど、それは何ですか? ぜひ、お願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- a-kuma
- ベストアンサー率50% (1122/2211)
「情報隠蔽の抜け道」って表現がどうかなあ、とは思いますが、きっと、 こういう答えを期待しているのかな? friend は、自分の中身をさらけ出す相手を指定します。それに対して、 protected は、さらけ出す相手は自分から派生させたクラスなので、誰が 自分の中身を見るのかを特定できません。 但し、friend は、相手を特定できる代わりに、自分の中身を全てさらけ出し ます。対して、protected は、メンバーのひとつひとつに指定ができるので さらけ出す情報と、そうじゃないものを区別できます。 喩えると、friend は、特定の人に「鍵」を渡す(その当人にしか使えない)ような もので、protected は、家計簿だけを鍵の掛かっていない郵便受けに入れて 置くようなものでしょうか。 なんか、C++ 自体を良く分かっていないみたいなので、この回答で意味が通じるか 自信はありません (^^; # 根本的に意味が違う friend と protected を並べて論じるのが、ちょっと…
- natural
- ベストアンサー率37% (419/1115)
protectedはそのクラスの子孫のクラスからのアクセスを許しますが、friendはクラスの系譜を越えて指定のクラスやその中の特定の関数からのアクセスを可能にします。 また、friendは特定の関数(メンバー関数ではない)からのアクセスも可能にします。
お礼
natural さん: とても、いい答えを頂きました、ありがとうございます。 また、宜しく、お願いします。 gakuse より
お礼
a-kuma さん: とても、いい答えを頂きました、ありがとうございます。 また、宜しく、お願いします。 gakuse より