2015-01-04 4 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

관련 문제