Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk menentukan sama ada fungsi adalah fungsi rakan?

Bagaimana untuk menentukan sama ada fungsi adalah fungsi rakan?

PHPz
PHPzasal
2024-04-15 15:09:01512semak imbas

Cara untuk menentukan sama ada fungsi ialah fungsi rakan: Gunakan kata kunci rakan dalam pengisytiharan fungsi. Kelayakan nama kelas tidak diperlukan dalam pengisytiharan fungsi.

Bagaimana untuk menentukan sama ada fungsi adalah fungsi rakan?

Cara menentukan sama ada fungsi ialah fungsi rakan

Fungsi rakan bukan sebahagian daripada kelas, tetapi ia masih boleh mengakses ahli peribadi kelas tersebut. Fungsi rakan boleh ditentukan dengan cara berikut:

  1. Gunakan kata kunci friendfriend
class MyClass {
private:
    int data;
    friend void printData(const MyClass& obj);
};

在上面的示例中,printData() 函数是一个友元函数,因为其声明中使用了关键字 friend

  1. 函数声明中不需要类名限定符

友元函数可以在类的外部声明,无需使用类名限定符:

class MyClass {
private:
    int data;
};

void printData(const MyClass& obj); // 友元函数声明
  1. 实战案例

考虑以下示例,展示如何使用友元函数访问类的私有成员:

class MyClass {
private:
    int data = 10;
    
    friend std::ostream& operator<<(std::ostream& os, const MyClass& obj) {
        os << "data: " << obj.data;
        return os;
    }
};

int main() {
    MyClass obj;
    std::cout << obj << std::endl; // 输出:data: 10
    
    return 0;
}

在这个示例中,operatorrrreee

dalam pengisytiharan fungsi Dalam contoh di atas, printData () Fungsi ini ialah fungsi kawan kerana kata kunci friend digunakan dalam pengisytiharannya. 🎜
    🎜🎜Tiada kelayakan nama kelas diperlukan dalam pengisytiharan fungsi🎜
🎜Fungsi rakan boleh diisytiharkan di luar kelas tanpa menggunakan kelayakan nama kelas: 🎜rrreee🎜🎜Kes Praktikal🎜🎜Pertimbangkan contoh berikut yang menunjukkan cara menggunakan fungsi rakan untuk mengakses ahli peribadi kelas: 🎜rrreee🎜Dalam contoh ini, operator ialah fungsi rakan yang digunakan untuk membebankan operator output untuk menyesuaikan cara maklumat kelas percetakan dicetak. 🎜

Atas ialah kandungan terperinci Bagaimana untuk menentukan sama ada fungsi adalah fungsi rakan?. 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