[c++] C ++에서 친구 선언-공개와 비공개의 차이점

친구 기능 / 클래스를 비공개 또는 공개로 선언하는 것에는 차이가 있습니까? 온라인에서이 내용을 찾을 수 없습니다.

나는 다음의 차이점을 의미합니다.

class A
{
 public:
      friend class B;
 };

class A
{
 private: //or nothing as the default is private
      friend class B;
 };

차이가 있습니까?



답변

아니요, 차이점은 없습니다. 클래스 B는 클래스 A의 친구이며 이제 개인 및 보호 된 멤버에 액세스 할 수 있습니다.


답변

구문 friend class B은 클래스 의 멤버 를 선언하지 않으므로 클래스 A를 작성하는 위치는 중요하지 않으므로 class B는 class 의 친구입니다 A.

당신이 쓰는 경우에도 friend class B에서 protected의 섹션 A, 그것은 그 말은하지 않습니다 B만 액세스 할 수 있습니다 protectedpublic의 구성원 A.

B번의 친구가 A되면, 어느 섹션 에서든 어떤 회원 이든 액세스 할 수 있다는 것을 항상 기억하십시오 .Afriend class B


답변

친구 선언은 클래스 본문에 나타나고 친구 선언이 나타나는 클래스의 비공개 및 보호 된 멤버에게 함수 또는 다른 클래스 액세스 권한을 부여합니다.

이러한 액세스 지정자는 친구 선언의 의미에 영향을 미치지 않습니다 (비공개 : 공개 또는 공개 섹션에 표시 될 수 있음).


답변