2015-01-04 13 views
5

クラスで、関数が - private、protected、publicのような異なる指定子の中でfriendとして宣言されている場合は、違いがあります。私の理解によると、友人機能はメンバーではありません。したがって、それは問題ではありません。しかし、私が静的に見える場合、それはメンバーではありませんが、アクセス指定子は大変重要です。だから、私は少し混乱しています。どのようにこれらのコードはすべて正常に動作しますか?次のクラスに違いはありますか?友人機能のアクセス指定子は重要ですか?

+2

*「静的に見える場合、メンバーでもない」* - はい。そうです。 –

+0

スタティックはクラスメンバーであり、オブジェクトメンバーではありません。 –

+0

"object member"という用語はC++標準には存在しません。静的クラスメンバーと非静的クラスメンバーがあります。 –

答えて

5

いいえ、問題ではありません。

C++標準、セクション11.3/9 [friend.class]

§友人宣言の意味は友人 宣言が保護、プライベートまたはパブリック(9.2)部分 に表示されるかどうかと同じですクラスメンバ指定の

注:クラス内で宣言

静的関数は、まだクラスのメンバです。友人機能はそうではありません。

+0

なぜ静的な問題ですか? –

+2

@dexterous_stranger:フレンド関数はメンバ関数ではありません。 'static'はクラスメンバの修飾子です。友情宣言はメンバーを宣言しないので、(現在のクラスの)メンバーでないメンバーに特別なアクセス権を付与するだけです。 – quantdev

関連する問題