Maison  >  Article  >  développement back-end  >  À quels types de membres les fonctions amies C++ peuvent-elles accéder ?

À quels types de membres les fonctions amies C++ peuvent-elles accéder ?

王林
王林original
2024-04-15 17:09:01896parcourir

En C++, les fonctions amies peuvent accéder à tous les membres publics, protégés et privés d'une classe, mais l'accès aux membres privés est restreint et ne peut être effectué que lorsqu'une fonction membre de la classe est appelée.

C++ 友元函数能访问哪些类型成员?

À quel type de membres les fonctions amies C++ peuvent-elles accéder ?

Qu'est-ce qu'une fonction ami ?

La fonction Friend est une fonction spéciale en C++ qui peut accéder aux membres privés et protégés d'une classe. Les fonctions Friend doivent être déclarées en dehors de la définition de la classe.

Membres de type auxquels les fonctions d'ami peuvent accéder

Les fonctions d'ami peuvent accéder aux membres de type suivants :

  • membres publics : Les fonctions d'ami peuvent accéder à tous les membres publics de la classe.
  • membres protégés : Les fonctions d'ami peuvent accéder à tous les membres protégés de la classe.
  • membres privés : Les fonctions ami peuvent accéder aux membres privés d'une classe, mais uniquement lorsque la fonction ami est appelée par une fonction membre de la classe.

Cas pratique

Considérons le code suivant :

class MyClass {
private:
    int m_num;

public:
    MyClass(int num) : m_num(num) {}

    friend void print_num(MyClass& obj) {
        std::cout << obj.m_num << std::endl;
    }
};

int main() {
    MyClass obj(42);
    print_num(obj);  // 友元函数访问私有成员
    return 0;
}

Résultat de sortie :

42

Dans cet exemple, print_num() est une fonction amie de MyClass. Il peut accéder au membre privé m_num même s'il ne s'agit pas d'une fonction membre de MyClass.

Accès restreint

Il est à noter que l'accès des fonctions amis aux membres privés est restreint. Les fonctions amies ne peuvent accéder aux membres privés que lorsqu'une fonction membre de la classe est appelée. En d’autres termes, les fonctions amies ne peuvent pas accéder directement aux membres privés de l’extérieur.

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