Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengakses Fungsi Rakan Ditakrifkan dalam Kelas C?

Bagaimana untuk Mengakses Fungsi Rakan Ditakrifkan dalam Kelas C?

Susan Sarandon
Lepaskan: 2024-11-10 08:39:02
asal
520 orang telah melayarinya

How to Access Friend Functions Defined in a C   Class?

Mengakses Fungsi Rakan Ditakrifkan dalam Kelas

Dalam C , fungsi rakan diberikan akses kepada ahli peribadi dan dilindungi kelas. Kod yang disediakan mentakrifkan kelas A dengan tiga fungsi rakan: seronok, seronok2 dan seronok3. Walaupun fun dan fun3 boleh diakses tanpa masalah, terdapat masalah untuk mengakses fun2.

Untuk mengakses fun2, anda mempunyai dua pilihan:

1. Pengisytiharan Global Fungsi Rakan:

Anda boleh mengisytiharkan fungsi rakan dalam skop global selepas definisi kelas. Ini memberitahu pengkompil bahawa fungsi wujud secara luaran dan merupakan rakan kelas. Contohnya:

<code class="cpp">#include <iostream>

class A {
public:
    friend void fun(A a);
    friend void fun2();
    friend void fun3();
};

void fun(A a) { std::cout << "I'm here" << std::endl; }
void fun2() { std::cout << "I'm here2" << std::endl; }
void fun3() {
    std::cout << "I'm here3" << std::endl;
}

int main() {
    fun(A()); // Works
    fun2(); // Now works
    fun3(); // Works
}</code>
Salin selepas log masuk

2. Invokasi Fungsi Ahli Eksplisit:

Anda boleh menggunakan fungsi rakan secara eksplisit sebagai fungsi ahli kelas. Walau bagaimanapun, ini memerlukan fungsi rakan ditandakan sebagai statik (jika mereka tidak mempunyai parameter ini). Contohnya:

<code class="cpp">#include <iostream>

class A {
public:
    friend static void fun(A a);
    friend static void fun2();
    friend static void fun3();
};

static void fun(A a) { std::cout << "I'm here" << std::endl; }
static void fun2() { std::cout << "I'm here2" << std::endl; }
static void fun3() {
    std::cout << "I'm here3" << std::endl;
}

int main() {
    fun(A()); // Works
    A::fun2(); // Works
    fun3(); // Works
}</code>
Salin selepas log masuk

Ingat, pengisytiharan fungsi rakan dalam skop global adalah perlu, tidak kira sama ada ia diakses secara eksplisit atau sebagai fungsi ahli statik.

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Fungsi Rakan Ditakrifkan dalam Kelas C?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan