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

Bagaimana untuk Mengakses Fungsi Rakan Ditakrifkan dalam Kelas C?

Susan Sarandon
Susan Sarandonasal
2024-11-10 08:39:02472semak imbas

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>

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>

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!

Kenyataan:
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