Maison  >  Article  >  développement back-end  >  Comment les fonctions amies C++ accèdent-elles aux membres privés ?

Comment les fonctions amies C++ accèdent-elles aux membres privés ?

WBOY
WBOYoriginal
2024-04-15 17:27:02672parcourir

Il existe deux manières pour les fonctions ami d'accéder aux membres privés en C++ : déclarer la fonction ami au sein de la classe. Déclarez une classe comme classe amie afin que toutes les fonctions membres de la classe puissent accéder aux membres privés d'une autre classe.

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

Comment la fonction ami C++ accède aux membres privés

Une fonction ami est une fonction définie en dehors d'une classe mais qui peut accéder aux membres privés de la classe. Il existe deux manières d'accéder aux membres privés par les fonctions ami :

1 Déclarer une fonction ami

Déclarer une fonction ami au sein de la classe, la syntaxe est la suivante :

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

  // 声明友元函数
  friend void friend_function();
};

De cette façon, l'ami déclaré. la fonction peut accéder aux membres privés de cette classe.

2. Déclarez une classe amie

Déclarez une classe comme classe amie, et toutes les fonctions membres de la classe peuvent accéder aux membres privés d'une autre classe. La syntaxe est la suivante :

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

  // 声明友元类
  friend class ClassName2;
};

Toutes les fonctions membres déclarées dans ClassName2 peuvent accéder aux membres privés de 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

Cas pratique

🎜🎜Considérons le code C++ suivant : 🎜
Name: John
Age: 30
Name: John
Age: 30
🎜Dans cet exemple, la fonction print_person_info est une fonction ami qui a accès aux propriétés privées de la Person. code> membre de la classe. Dans la classe Person, la fonction print_info accède également aux membres privés à l'aide d'une déclaration de fonction ami. 🎜🎜L'exécution du code ci-dessus affichera : 🎜rrreee

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn