ホームページ  >  記事  >  バックエンド開発  >  フレンド関数は他のフレンド関数を呼び出すことができますか?

フレンド関数は他のフレンド関数を呼び出すことができますか?

王林
王林オリジナル
2024-04-15 22:45:01320ブラウズ

フレンド関数は相互に呼び出すことができます。フレンド関数は、クラスのプライベート メンバー変数およびプライベート メソッドにアクセスできる特別な関数であり、相互にプライベート データにアクセスできる密接に関連した関数のグループを作成できます。フレンド関数は、通常の関数と同じように相互に呼び出すことができます。

フレンド関数は他のフレンド関数を呼び出すことができますか?

#フレンド関数は相互に呼び出すことができますか?

フレンド関数は、クラスのプライベート メンバー変数およびプライベート メソッドにアクセスできる C の特別な関数です。 という言葉は、その名前が示すように、友好的な関係を意味します。では、フレンド関数は相互に呼び出すことができるのでしょうか?

答えは「はい」です。

フレンド関数は相互に呼び出すことができます。これがフレンド関数の強みの 1 つです。これにより、相互にプライベート データにアクセスできる、密接に関連した一連の関数を作成できます。

構文

フレンド関数を宣言して別のフレンド関数を呼び出すための構文は、通常の関数呼び出しの構文と似ています。例:

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

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

実用的なケース

フレンド関数を使用して相互に呼び出す簡単な例を次に示します:

#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;
}

出力

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

この例では、フレンド関数 operator と <code>operator== が相互に呼び出して、operator および <code>==

以上がフレンド関数は他のフレンド関数を呼び出すことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。