Maison  >  Article  >  développement back-end  >  Les fonctions amies peuvent-elles appeler d’autres fonctions amies ?

Les fonctions amies peuvent-elles appeler d’autres fonctions amies ?

王林
王林original
2024-04-15 22:45:01280parcourir

Les fonctions Amis peuvent s'appeler. Une fonction amie est une fonction spéciale qui a accès aux variables membres privées et aux méthodes privées d'une classe, permettant la création de groupes de fonctions étroitement liés qui peuvent accéder aux données privées des autres. Les fonctions amies peuvent s'appeler comme des fonctions ordinaires.

Les fonctions amies peuvent-elles appeler d’autres fonctions amies ?

Les fonctions amis peuvent-elles s'appeler ?

La fonction Friend est une fonction spéciale en C++ qui peut accéder aux variables membres privées et aux méthodes privées d'une classe. Le mot Friends, comme son nom l'indique, signifie avoir une relation amicale. Alors, les fonctions amies peuvent-elles s’appeler ?

La réponse est oui.

Les fonctions ami peuvent s'appeler, ce qui est l'un des points forts des fonctions ami. Cela nous permet de créer un ensemble de fonctions étroitement liées qui peuvent accéder aux données privées de chacun.

Syntaxe

La syntaxe pour déclarer une fonction ami pour appeler une autre fonction ami est similaire à un appel de fonction normal. Par exemple :

class MyClass {
    friend void func1();
    friend void func2();
};

void func1() {
    func2(); // 调用友元函数 func2
}

Cas pratique

Voici un exemple simple d'utilisation des fonctions ami pour s'appeler :

#include <iostream>

class ComplexNumber {
    private:
        double real, imag;

    public:
        ComplexNumber(double r, double i) : real(r), imag(i) {}

        // 以下声明为友元函数
        friend std::ostream& operator<<(std::ostream&, const ComplexNumber&);
        friend bool operator==(const ComplexNumber&, const ComplexNumber&);
};

// 友元函数重载运算符 <<
std::ostream& operator<<(std::ostream& os, const ComplexNumber& z) {
    os << z.real << " + " << z.imag << "i";
    return os;
}

// 友元函数重载运算符 ==
bool operator==(const ComplexNumber& z1, const ComplexNumber& z2) {
    // 友元函数可以访问私有成员变量 real、imag
    return z1.real == z2.real && z1.imag == z2.imag;
}

int main() {
    ComplexNumber z1(1.2, 3.4), z2(1.2, 3.4);

    std::cout << z1 << " == " << z2 << " : " << std::boolalpha << (z1 == z2) << std::endl;

    return 0;
}

Output

1.2 + 3.4i == 1.2 + 3.4i : true

Dans cet exemple, la fonction ami operator 和 <code>operator== 可以相互调用,以重载运算符 和 <code>==.

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