Maison  >  Article  >  développement back-end  >  Explication détaillée des fonctions ami C++ : Comment déclarer une classe ami ?

Explication détaillée des fonctions ami C++ : Comment déclarer une classe ami ?

王林
王林original
2024-04-28 15:00:02576parcourir

En C++, une classe amie permet à toutes les fonctions membres d'une classe d'accéder aux membres privés d'une autre classe. Lors de la déclaration d'une classe amie, utilisez le mot-clé Friend Class, par exemple : OuterClass déclare la classe interne comme classe amie : classe interne de la classe amie ; seules les fonctions membres de la classe interne peuvent accéder aux membres privés d'OuterClass.

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

Explication détaillée de la fonction ami C++ : Comment déclarer une classe amie

Avant-propos

En C++, la relation amie est un mécanisme puissant qui permet aux fonctions non membres d'accéder aux membres privés d'une classe. Une classe amie est une forme particulière de relation d'amitié qui permet à toutes les fonctions membres d'une classe d'accéder aux membres privés d'une autre classe.

Déclaration de classe amie

Pour déclarer une classe amie, vous devez utiliser le mot clé ami dans la définition de la classe. La syntaxe est la suivante : 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
  • Cela permettra à toutes les fonctions membres de InnerClass d'accéder aux membres privés de <code>OuterClass, mais pas aux autres classes.
🎜🎜Cas pratique🎜🎜🎜Considérons un exemple pratique, où OuterClass représente une classe contenant des données sensibles, et Inner Class représente une classe qui doit accéder à ces données. Classe utilitaire. 🎜🎜🎜OuterClass : 🎜🎜rrreee🎜🎜Inner Class : 🎜🎜rrreee🎜Dans ce cas, seules les fonctions membres de InnerClass peuvent accéder au de <code>OuterClass > Membre secretData. Les autres classes ne peuvent pas accéder à ce membre privé. 🎜🎜🎜Remarque : 🎜🎜
  • Les classes d'amis sont des relations à sens unique. OuterClass ne peut accéder qu'aux membres publics de la classe interne, tandis que la classe interne peut accéder à tous les membres de <code>OuterClass. 🎜
  • Les classes d'amis peuvent être des modèles de classe ou des instanciations de classe. 🎜
  • Plusieurs classes peuvent être désignées comme amis en utilisant la syntaxe friend class* dans la définition de la classe. 🎜🎜

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