Maison  >  Article  >  développement back-end  >  Explication détaillée des fonctions amies C++ : quelles sont les limitations des fonctions amies lors de l'accès aux membres privés ?

Explication détaillée des fonctions amies C++ : quelles sont les limitations des fonctions amies lors de l'accès aux membres privés ?

PHPz
PHPzoriginal
2024-04-29 12:15:01268parcourir

Les fonctions Friends peuvent accéder aux membres privés, mais sont restreintes : elles ne peuvent accéder qu'aux membres privés de la classe actuelle (ne peuvent pas accéder aux classes héritées) et ne peuvent pas les modifier directement. En combat réel, les fonctions d'ami peuvent accéder aux membres privés via des références ou des pointeurs, comme accéder au nom de membre privé de la classe Étudiant et imprimer les informations sur l'étudiant.

C++ 友元函数详解:友元函数在访问私有成员时的限制?

Explication détaillée de la fonction ami C++ : Restrictions d'accès aux membres privés

Qu'est-ce qu'une fonction ami ?

Une fonction ami est une fonction qui n'appartient à aucune classe, mais peut accéder à tous les membres déclarés dans la classe (y compris les membres privés). Les fonctions Friend permettent une interaction étroite entre différentes classes et permettent une utilisation flexible des classes encapsulées.

Restrictions sur les fonctions d'ami accédant aux membres privés

Il existe certaines restrictions lorsque les fonctions d'ami accèdent aux membres privés :

  • Les fonctions d'ami ne peuvent accéder qu'aux membres privés de la classe actuelle et ne peuvent pas accéder aux membres privés des classes héritées.
  • Les fonctions Amis ne peuvent pas modifier directement les membres privés.

Cas pratique

Supposons que nous ayons une classe Student, qui a un membre privé name et un membre public getAge() . Nous créons une fonction amie printStudentInfo() pour accéder au membre privé name et imprimer les informations sur l'étudiant. Student 类,它有一个私有成员 name 和一个公有成员 getAge()。我们创建一个友元函数 printStudentInfo() 来访问私有成员 name 并打印学生信息。

class Student {
private:
    string name;
public:
    int getAge();
    // 声明友元函数
    friend void printStudentInfo(const Student& student);
};

void printStudentInfo(const Student& student) {
    // 可以访问私有成员
    cout << "Name: " << student.name << endl;
    // 不能修改私有成员
    // student.name = "John Doe"; // 错误
}

int main() {
    Student student1;
    student1.setName("Jane Doe");
    printStudentInfo(student1);
    return 0;
}

输出:

Name: Jane Doe

在这个示例中,友元函数 printStudentInfo() 可以访问私有成员 namerrreee

🎜Sortie : 🎜🎜rrreee🎜Dans cet exemple, la fonction ami printStudentInfo() peut accéder au membre privé nom, mais ne peut pas le modifier. De plus, il convient de noter que les fonctions amies ne peuvent accéder aux membres de la classe que via des références ou des pointeurs, et ne peuvent pas utiliser directement les membres d'objet. 🎜

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