Rumah > pembangunan bahagian belakang > C++ > Penjelasan terperinci tentang fungsi rakan C++: Bagaimana untuk menggunakan fungsi rakan untuk akses merentas kelas?

Penjelasan terperinci tentang fungsi rakan C++: Bagaimana untuk menggunakan fungsi rakan untuk akses merentas kelas?

王林
Lepaskan: 2024-04-29 18:51:01
asal
1159 orang telah melayarinya

Fungsi rakan dalam C++ membenarkan fungsi bukan ahli untuk mengakses ahli peribadi dan dilindungi kelas, yang sangat berguna dalam melaksanakan operasi merentas kelas, ADT dan ujian unit: Mengisytiharkan fungsi rakan: Gunakan kata kunci rakan untuk mengisytiharkan fungsi di luar kelas. Gunakan fungsi rakan: Akses terus ahli peribadi kelas seolah-olah ia adalah fungsi ahli. Kes praktikal: Gunakan fungsi rakan untuk mendapatkan maklumat umur peribadi tanpa mendedahkan atribut umur.

C++ 友元函数详解:如何使用友元函数进行跨类访问?

Penjelasan terperinci tentang fungsi rakan C++: menjadikan akses merentas kelas menjadi kenyataan

Dalam pengaturcaraan C++, fungsi rakan ialah mekanisme berkuasa yang membenarkan fungsi di luar kelas mengakses ahli kelas peribadi dan dilindungi. Ini sangat berguna dalam situasi tertentu, contohnya:

  • Melaksanakan fungsi bukan ahli untuk beroperasi pada atribut kelas tertentu.
  • Laksanakan jenis data abstrak (ADT) merentas kelas.
  • Dalam rangka kerja ujian Unit, gunakan fungsi rakan untuk memintas sekatan akses untuk menguji kaedah persendirian.

Pengisytiharan fungsi rakan

class MyClass {
public:
    // ...
private:
    // ...
    friend void print_my_class(const MyClass&); // 声明友元函数
};
Salin selepas log masuk

Kod di atas mengisytiharkan print_my_class sebagai fungsi rakan MyClass. Ini bermakna fungsi print_my_class boleh mengakses ahli peribadi dan dilindungi MyClass. print_my_class 作为 MyClass 的友元函数。这意味着 print_my_class 函数可以访问 MyClass 的私有和受保护成员。

友元函数的使用

要使用友元函数,只需在友元函数中直接访问类的私有成员即可:

void print_my_class(const MyClass& obj) {
    std::cout << "Private member: " << obj.private_member << std::endl;
    std::cout << "Protected member: " << obj.protected_member << std::endl;
}
Salin selepas log masuk

实战案例

假设我们有一个 Person 类,表示一个人,它具有一个私有的 age 成员。我们想要创建一个友元函数 get_age 来获取 Person 对象的年龄:

class Person {
public:
    // ...
private:
    int age;
    friend int get_age(const Person&); // 声明友元函数
};

int get_age(const Person& person) {
    return person.age;
}
Salin selepas log masuk

main 函数中,我们创建一个 Person 对象并使用友元函数 get_age

Penggunaan fungsi rakan

Untuk menggunakan fungsi rakan, cuma akses ahli peribadi kelas secara terus dalam fungsi rakan: 🎜
int main() {
    Person person(25);
    std::cout << "Age: " << get_age(person) << std::endl;
    return 0;
}
Salin selepas log masuk
🎜Kes praktikal🎜🎜Andaikan kita mempunyai Kelas Orang yang mewakili orang dan mempunyai ahli umur peribadi. Kami ingin mencipta fungsi rakan get_age untuk mendapatkan umur objek Orang: 🎜
Age: 25
Salin selepas log masuk
🎜Dalam fungsi utama, kami mencipta Orang objek dan gunakan fungsi rakan get_age untuk mengakses ahli peribadinya: 🎜rrreee🎜Output: 🎜rrreee

Atas ialah kandungan terperinci Penjelasan terperinci tentang fungsi rakan C++: Bagaimana untuk menggunakan fungsi rakan untuk akses merentas kelas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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