Rumah > pembangunan bahagian belakang > C++ > Bolehkah fungsi rakan memanggil fungsi rakan lain?

Bolehkah fungsi rakan memanggil fungsi rakan lain?

王林
Lepaskan: 2024-04-15 22:45:01
asal
339 orang telah melayarinya

Fungsi rakan boleh memanggil satu sama lain. Fungsi rakan ialah fungsi khas yang mempunyai akses kepada pembolehubah ahli persendirian dan kaedah persendirian kelas, membenarkan penciptaan kumpulan fungsi yang berkait rapat yang boleh mengakses data peribadi satu sama lain. Fungsi rakan boleh memanggil satu sama lain seperti fungsi biasa.

Bolehkah fungsi rakan memanggil fungsi rakan lain?

Bolehkah fungsi rakan memanggil satu sama lain?

Fungsi rakan ialah fungsi khas dalam C++ yang boleh mengakses pembolehubah ahli persendirian dan kaedah persendirian kelas. Perkataan Kawan, seperti namanya, bermaksud mempunyai hubungan yang mesra. Jadi, bolehkah fungsi rakan memanggil satu sama lain?

Jawapannya ya.

Fungsi rakan boleh memanggil antara satu sama lain, yang merupakan salah satu kekuatan fungsi rakan. Ia membolehkan kami mencipta satu set fungsi berkait rapat yang boleh mengakses data peribadi masing-masing.

Syntax

Sintaks untuk mengisytiharkan fungsi rakan untuk memanggil fungsi rakan lain adalah serupa dengan panggilan fungsi biasa. Contohnya:

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

void func1() {
    func2(); // 调用友元函数 func2
}
Salin selepas log masuk

Kes praktikal

Berikut adalah contoh mudah menggunakan fungsi rakan untuk memanggil satu sama lain:

#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;
}
Salin selepas log masuk

Output

1.2 + 3.4i == 1.2 + 3.4i : true
Salin selepas log masuk

Dalam contoh ini, fungsi rakan operator 和 <code>operator== 可以相互调用,以重载运算符 和 <code>==.

Atas ialah kandungan terperinci Bolehkah fungsi rakan memanggil fungsi rakan lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan