>백엔드 개발 >C++ >C++ 친구 함수에 대한 자세한 설명: 친구 함수의 액세스 권한을 제한하는 방법은 무엇입니까?

C++ 친구 함수에 대한 자세한 설명: 친구 함수의 액세스 권한을 제한하는 방법은 무엇입니까?

WBOY
WBOY원래의
2024-04-29 09:09:021067검색

C++의 Friend 함수는 액세스 지정자 또는 네임스페이스를 통해 액세스 권한을 제한하여 특정 함수 또는 특정 네임스페이스 내의 함수만 클래스의 비공개 멤버에 액세스하도록 허용할 수 있습니다.

C++ 友元函数详解:如何限制友元函数的访问权限?

C++ 친구 기능에 대한 자세한 설명: 친구 기능의 접근 권한을 어떻게 제한하나요?

C++에서 친구 함수는 외부 함수가 클래스의 비공개 멤버에 액세스할 수 있도록 하는 특수 함수입니다. 이를 통해 다른 클래스 외부에서 한 클래스의 개인 데이터나 기능에 액세스할 수 있으므로 특정 상황에서 더 큰 유연성을 제공할 수 있습니다.

친구 기능의 접근 권한을 제한하세요

친구 선언을 제한하여 친구 기능의 접근 권한을 비공개 멤버로 제한할 수 있습니다. 이를 수행하는 방법에는 두 가지가 있습니다:

방법 1: 액세스 지정자 사용

액세스 지정자(공개, 보호 또는 비공개)를 사용하여 친구 기능의 액세스를 제한할 수 있습니다. 구문은 다음과 같습니다.

class MyClass {
  private:
    // 私有成员只能被友元函数访问
    friend void friendFunction();
};

방법 2: 네임스페이스 사용

네임스페이스를 사용하여 친구 기능의 가시성을 제한할 수도 있습니다. 구문은 다음과 같습니다.

namespace MyNamespace {
  class MyClass {
    private:
      // 私有成员由 MyNameSpace 命名空间内部所有友元函数访问
      friend class MyFriendClass;
  };
}

실용 사례

다음 두 클래스가 있다고 가정합니다:

class Person {
  private:
    string name;
    int age;
};

class FriendClass {
  public:
    // 可以访问私有成员,因为它是一个友元类
    void printPersonDetails(Person person) {
      cout << person.name << ", " << person.age << endl;
    }
};

여기, FriendClassPerson 类的友元类,因此它可以访问 nameage 및 기타 비공개 멤버.

예제 실행

int main() {
  Person person{"John Doe", 30};
  FriendClass friendObj;  
  friendObj.printPersonDetails(person);
  return 0;
}

출력:

John Doe, 30

위 내용은 C++ 친구 함수에 대한 자세한 설명: 친구 함수의 액세스 권한을 제한하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.