Rumah > pembangunan bahagian belakang > C++ > Bilakah anda perlu menggunakan fungsi rakan?

Bilakah anda perlu menggunakan fungsi rakan?

王林
Lepaskan: 2024-04-16 16:39:01
asal
805 orang telah melayarinya

Senario untuk menggunakan fungsi rakan dalam C++ termasuk: 1. Lebih muatan operator; 2. Akses merentas kelas; Fungsi rakan boleh mengakses ahli persendirian kelas lain, tetapi ia mengurangkan enkapsulasi, jadi gunakannya dengan berhati-hati hanya apabila perlu dan pastikan anda hanya menyediakan akses yang diperlukan.

Bilakah anda perlu menggunakan fungsi rakan?

Bila menggunakan fungsi rakan

Dalam C++, fungsi rakan ialah fungsi khas yang mempunyai akses kepada ahli peribadi dan dilindungi kelas. Dalam situasi tertentu, menggunakan fungsi rakan boleh memberikan kemudahan dan fleksibiliti. . kelas.

Akses merentas kelas: Apabila ahli persendirian atau dilindungi perlu diakses dari kelas lain.

  • Fungsi Global: Apabila anda perlu mencipta fungsi global yang boleh mengakses ahli persendirian kelas lain. +- 运算符。
  • 跨类访问:当需要从另一个类访问私有或受保护成员时。
  • 全局函数:当需要创建一个可以访问其他类私有成员的全局函数时。
  • 测试:当需要从测试文件访问私有成员以便进行单元测试时。

语法

声明友元函数的语法如下:

friend 返回值类型 函数名(参数列表);
Salin selepas log masuk

将类声明为友元的语法如下:

class 类名 {
    // ...
    friend 返回值类型 函数名(参数列表);
    // ...
};
Salin selepas log masuk

实战案例

考虑一个代表日期的 Date 类,它具有私有成员 daymonthyear。现在,我们想实现一个 isLeapYear 函数来检查指定的年份是否是闰年。

class Date {
private:
    int day, month, year;

public:
    // ...

    friend bool isLeapYear(int year);
};

bool isLeapYear(int year) {
    return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
Salin selepas log masuk

在这种情况下,友元函数 isLeapYear 可以访问 Date 类的私有成员 year

Pengujian:

Apabila anda perlu mengakses ahli persendirian daripada fail ujian untuk ujian unit. . yang mewakili tarikh > Kelas dengan ahli peribadi hari, month dan year. Sekarang, kami ingin melaksanakan fungsi isLeapYear untuk menyemak sama ada tahun yang ditentukan ialah tahun lompat. rrreeeDalam kes ini, fungsi rakan isLeapYear boleh mengakses ahli peribadi tahun kelas Tarikh untuk mengira sama ada ia adalah tahun lompat.

  • Nota lain
  • Menggunakan fungsi rakan akan melemahkan enkapsulasi kelas, jadi gunakannya dengan berhati-hati.
Gunakan fungsi rakan hanya apabila benar-benar perlu, memberi keutamaan kepada kaedah pengakses dan pengubah suai. 🎜🎜Pastikan fungsi rakan hanya mempunyai kebenaran yang diperlukan untuk mencapai matlamat mereka dan elakkan memberikan akses yang berlebihan kepada ahli persendirian. 🎜🎜

Atas ialah kandungan terperinci Bilakah anda perlu menggunakan fungsi rakan?. 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