コピーコンストラクタについて、初心者からの質問です

[戻る]
あとらす 2005/06/21(火) 17:12:07
コピーコンストラクタ内で、仮引数に渡したクラスの
privateメンバにアクセスできる理由が今ひとつわかりません。
スコープが解決していれば、呼び出しもととは別のオブジェクトの
privateメンバにでもアクセスできるということで良いのでしょうか?

Ban 2005/06/21(火) 17:57:10
C++ のアクセス制限は、個々のオブジェクトに対してではなく、クラスに対してかかるものです。
他のオブジェクトであろうと、同じクラスであればアクセス制限はかかりません。

利点としては、型情報だけあれば評価が可能で、オブジェクトの識別情報を
持たなくていいことでしょうか。
# instanceof() のようなデータ/機能が不要。

tetrapod 2005/06/21(火) 18:04:02
private な名前は(それが this に関連付けされているか否かにかかわらず)
クラスのメンバ(関数)内であれば使うことができます。

規格書の表現を引用するなら
private: この種別のクラスメンバの名前は、それが宣言されているクラスの、
メンバ、随伴関数、随伴クラスだけが使うことができる。
(JIS X 3014:2003 11) 随伴とは friend の訳語

ということで、
>スコープが解決していれば、呼び出しもととは別のオブジェクトの
>privateメンバにでもアクセスできるということで良いのでしょうか?
そういうことです。

あとらす 2005/06/21(火) 18:05:32
[[解決]]
Ban様 どうもありがとうございました。おかげで疑問が解消しました。

あとらす 2005/06/21(火) 18:08:36
[[解決]]
tetrapod様 どうもありがとうございました。規格書引用もためになりました。

古いスレッドには追加発言できません。