> 백엔드 개발 > C++ > 본문

C++ 친구 함수는 개인 멤버에 어떻게 액세스합니까?

WBOY
풀어 주다: 2024-04-15 17:27:02
원래의
681명이 탐색했습니다.

friend 함수가 C++의 private 멤버에 액세스하는 방법에는 두 가지가 있습니다. 즉, 클래스 내에서 friend 함수를 선언하는 것입니다. 클래스의 모든 멤버 함수가 다른 클래스의 전용 멤버에 액세스할 수 있도록 클래스를 friend 클래스로 선언합니다.

C++ 友元函数如何访问私有成员?

C++ 친구 함수가 비공개 멤버에 액세스하는 방법

친구 함수는 클래스 외부에 정의되어 있지만 클래스의 비공개 멤버에 액세스할 수 있는 함수입니다. 개인 멤버에 대한 친구 함수의 액세스를 구현하는 방법에는 두 가지가 있습니다.

1. 친구 함수를 선언합니다.

클래스 내에서 친구 함수를 선언합니다. 구문은 다음과 같습니다.

class ClassName {
public:
  // 类成员...

  // 声明友元函数
  friend void friend_function();
};
로그인 후 복사

이렇게 선언된 친구는 함수는 이 클래스의 비공개 멤버에 액세스할 수 있습니다.

2. 친구 클래스 선언

클래스를 친구 클래스로 선언하면 해당 클래스의 모든 멤버 함수는 다른 클래스의 비공개 멤버에 액세스할 수 있습니다. 구문은 다음과 같습니다.

class ClassName1 {
public:
  // 类成员...

  // 声明友元类
  friend class ClassName2;
};
로그인 후 복사

ClassName2에 선언된 모든 멤버 함수는 ClassName1의 전용 멤버에 액세스할 수 있습니다. ClassName2 中的成员函数都可以访问 ClassName1 的私有成员。

实战案例

考虑以下 C++ 代码:

class Person {
private:
  int age;
  string name;

public:
  // 友元函数
  friend void print_person_info(const Person& person);

  // 访问私有成员的友元函数
  void print_info() const {
    cout << "Name: " << name << endl;
    cout << "Age: " << age << endl;
  }
};

// 友元函数外部分类的定义
void print_person_info(const Person& person) {
  cout << "Name: " << person.name << endl;
  cout << "Age: " << person.age << endl;
}

int main() {
  Person person;
  person.name = "John";
  person.age = 30;

  person.print_info();
  print_person_info(person);

  return 0;
}
로그인 후 복사

在这个例子中,print_person_info 函数是一个友元函数,它可以访问 Person 类的私有成员。在 Person 类中,print_info

실용 사례

🎜🎜다음 C++ 코드를 고려하세요. 🎜
Name: John
Age: 30
Name: John
Age: 30
로그인 후 복사
🎜이 예에서 print_person_info 함수는 Person의 개인 속성에 액세스할 수 있는 친구 함수입니다. 코드> 클래스 멤버. <code>Person 클래스에서 print_info 함수는 friend 함수 선언을 사용하여 비공개 멤버에도 액세스합니다. 🎜🎜위 코드를 실행하면 다음이 출력됩니다: 🎜rrreee

위 내용은 C++ 친구 함수는 개인 멤버에 어떻게 액세스합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿