>  기사  >  백엔드 개발  >  C++ 친구 함수에 대한 자세한 설명: 친구 클래스를 선언하는 방법은 무엇입니까?

C++ 친구 함수에 대한 자세한 설명: 친구 클래스를 선언하는 방법은 무엇입니까?

王林
王林원래의
2024-04-28 15:00:02576검색

C++에서 친구 클래스를 사용하면 한 클래스의 모든 멤버 함수가 다른 클래스의 전용 멤버에 액세스할 수 있습니다. 친구 클래스를 선언할 때, 친구 클래스 키워드를 사용하세요. 예: OuterClass는 내부 클래스를 친구 클래스로 선언합니다. 친구 클래스 내부 클래스; 내부 클래스의 멤버 함수만 OuterClass의 전용 멤버에 액세스할 수 있습니다.

C++ 友元函数详解:如何声明友元类?

C++ Friend 함수 자세한 설명: Friend 클래스 선언 방법

머리말

C++에서 친구 관계는 비멤버 함수가 클래스의 비공개 멤버에 액세스할 수 있도록 하는 강력한 메커니즘입니다. 친구 클래스는 한 클래스의 모든 멤버 함수가 다른 클래스의 전용 멤버에 액세스할 수 있도록 하는 특별한 형태의 우정 관계입니다.

친구 클래스 선언

친구 클래스를 선언하려면 클래스 정의에 friend 키워드를 사용해야 합니다. 구문은 다음과 같습니다. friend 关键字。语法如下:

class OuterClass {
    // 成员变量和函数

    friend class InnerClass;
};

这将允许 InnerClass 中的所有成员函数访问 OuterClass 的私有成员,而其他类则无法访问。

实战案例

让我们考虑一个实际示例,其中 OuterClass 表示一个包含敏感数据的类,而 内层类 表示一个需要访问该数据的实用程序类。

OuterClass:

class OuterClass {
private:
    int secretData;  // 敏感数据

public:
    // 可以公开访问的数据和方法
};

内层类:

class InnerClass {
    friend class OuterClass;  // 声明友元类

public:
    void printData(OuterClass& outerObj) {
        // 访问OuterClass的私有成员 secretData
        cout << "敏感数据:" << outerObj.secretData << endl;
    }
};

在这种情况中,只有 InnerClass 中的成员函数可以访问 OuterClasssecretData 成员。其他类无法访问该私有成员。

注意:

  • 友元类是单向关系。OuterClass 只能访问 内层类 的公共成员,而 内层类 可以访问 OuterClass 的所有成员。
  • 友元类可以是类模板或类实例化。
  • 可以通过在类定义中使用 friend class*rrreee
  • 이렇게 하면 InnerClass의 모든 멤버 함수가 OuterClass의 비공개 멤버에 액세스할 수 있지만 다른 클래스에는 액세스할 수 없습니다.
🎜🎜실용 사례🎜🎜🎜 OuterClass는 민감한 데이터가 포함된 클래스를 나타내고 Inner Class는 해당 데이터에 액세스해야 하는 클래스를 나타내는 실제 예를 생각해 보겠습니다. 유틸리티 클래스. 🎜🎜🎜OuterClass: 🎜🎜rrreee🎜🎜Inner Class: 🎜🎜rrreee🎜이 경우 InnerClass의 멤버 함수만 OuterClass에 액세스할 수 있습니다. secretData 멤버입니다. 다른 클래스는 이 비공개 멤버에 액세스할 수 없습니다. 🎜🎜🎜참고: 🎜🎜
  • 친구 수업은 일방향 관계입니다. OuterClassinner class의 공개 멤버에만 액세스할 수 있는 반면, inner classOuterClass의 모든 멤버에 액세스할 수 있습니다. 🎜
  • Friend 클래스는 클래스 템플릿 또는 클래스 인스턴스화일 수 있습니다. 🎜
  • 클래스 정의에서 friend class* 구문을 사용하여 여러 클래스를 친구로 지정할 수 있습니다. 🎜🎜

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

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