Maison > développement back-end > C++ > Explication détaillée du mécanisme ami des fonctions C++

Explication détaillée du mécanisme ami des fonctions C++

WBOY
Libérer: 2024-04-18 11:15:02
original
1174 Les gens l'ont consulté

Le mécanisme ami C++ permet aux fonctions ou classes non membres d'accéder aux membres privés ou protégés d'autres classes pour atteindre les objectifs suivants : Autoriser les fonctions non membres à accéder aux membres privés Autoriser les fonctions membres à accéder aux membres privés d'autres classes Autoriser les fonctions membres de classe pour accéder aux membres privés d'une autre classe Membres privés

C++ 函数的友元机制详解

Explication détaillée du mécanisme ami des fonctions C++

Le mécanisme ami est une fonctionnalité qui permet à une fonction ou une classe d'accéder à des membres privés ou protégés d'autres classes ou les fonctions. En C++, le mécanisme ami peut atteindre les objectifs suivants :

  • Autoriser les fonctions non membres à accéder aux membres privés d'une classe
  • Autoriser les fonctions membres d'une classe à accéder aux membres privés d'une autre classe

Syntaxe

  • Déclaration d'ami de fonction globale :

    friend 返回值类型 函数名(参数列表);
    Copier après la connexion
  • Déclaration d'ami de classe :

    friend class 类名;
    Copier après la connexion
  • Déclaration d'ami de fonction de membre de classe :

    friend 返回值类型 类名::成员函数名(参数列表);
    Copier après la connexion

Cas pratique :

Question : Conception un Point 类,它有私有成员 xy,并且有一个打印所有私有成员的 print() 函数。现在,我们想要一个额外的 printInfo() 函数,它可以访问 Point Membres privés de la classe et imprimez-les.

Mise en œuvre :

// Point 类
class Point {
private:
    int x;
    int y;

public:
    // 友元函数,可以访问 Point 类的私有成员
    friend void printInfo(Point& point);

    // Point 类的成员函数
    void print() {
        std::cout << "x: " << x << ", y: " << y << std::endl;
    }
};

// 全局友元函数,可以访问 Point 类的私有成员
void printInfo(Point& point) {
    std::cout << "x: " << point.x << ", y: " << point.y << std::endl;
}

int main() {
    Point point{10, 20};
    point.print();  // 输出:x: 10, y: 20
    printInfo(point);  // 输出:x: 10, y: 20
    return 0;
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal