通知
すべてクリア
Topic starter
2005年6月21日 5:12 PM
コピーコンストラクタ内で、仮引数に渡したクラスの
privateメンバにアクセスできる理由が今ひとつわかりません。
スコープが解決していれば、呼び出しもととは別のオブジェクトの
privateメンバにでもアクセスできるということで良いのでしょうか?
2005年6月21日 5:57 PM
C++ のアクセス制限は、個々のオブジェクトに対してではなく、クラスに対してかかるものです。
他のオブジェクトであろうと、同じクラスであればアクセス制限はかかりません。
利点としては、型情報だけあれば評価が可能で、オブジェクトの識別情報を
持たなくていいことでしょうか。
# instanceof() のようなデータ/機能が不要。
2005年6月21日 6:04 PM
private な名前は(それが this に関連付けされているか否かにかかわらず)
クラスのメンバ(関数)内であれば使うことができます。
規格書の表現を引用するなら
private: この種別のクラスメンバの名前は、それが宣言されているクラスの、
メンバ、随伴関数、随伴クラスだけが使うことができる。
(JIS X 3014:2003 11) 随伴とは friend の訳語
ということで、
>スコープが解決していれば、呼び出しもととは別のオブジェクトの
>privateメンバにでもアクセスできるということで良いのでしょうか?
そういうことです。
Topic starter
2005年6月21日 6:05 PM
Ban様 どうもありがとうございました。おかげで疑問が解消しました。
Topic starter
2005年6月21日 6:08 PM
tetrapod様 どうもありがとうございました。規格書引用もためになりました。