Penjelasan terperinci tentang fungsi rakan C++: Bagaimana untuk menyekat hak capaian fungsi rakan?

WBOY
Lepaskan: 2024-04-29 09:09:02
asal
1046 orang telah melayarinya

Fungsi rakan dalam C++ boleh menyekat hak akses melalui penentu akses atau ruang nama untuk membenarkan hanya fungsi atau fungsi tertentu dalam ruang nama tertentu untuk mengakses ahli peribadi kelas.

C++ 友元函数详解:如何限制友元函数的访问权限?

C++ Penjelasan terperinci tentang fungsi rakan: Bagaimana untuk menyekat hak akses fungsi rakan?

Dalam C++, fungsi rakan ialah fungsi khas yang membolehkan fungsi luaran mengakses ahli peribadi kelas. Ia membolehkan kami mengakses data peribadi atau fungsi satu kelas di luar kelas lain, sekali gus memberikan fleksibiliti yang lebih besar dalam situasi tertentu.

Sekat hak akses fungsi rakan

Kami boleh mengehadkan hak akses fungsi rakan kepada ahli persendirian dengan menyekat pengisytiharan rakan. Terdapat dua cara untuk melakukan ini:

Kaedah 1: Menggunakan penentu akses

Kami boleh menyekat akses fungsi rakan menggunakan penentu akses (awam, dilindungi atau peribadi). Sintaksnya adalah seperti berikut:

class MyClass {
  private:
    // 私有成员只能被友元函数访问
    friend void friendFunction();
};
Salin selepas log masuk

Kaedah 2: Menggunakan ruang nama

Anda juga boleh menggunakan ruang nama untuk mengehadkan keterlihatan fungsi rakan. Sintaksnya adalah seperti berikut:

namespace MyNamespace {
  class MyClass {
    private:
      // 私有成员由 MyNameSpace 命名空间内部所有友元函数访问
      friend class MyFriendClass;
  };
}
Salin selepas log masuk

Kes praktikal

Andaikan kita mempunyai dua kelas berikut:

class Person {
  private:
    string name;
    int age;
};

class FriendClass {
  public:
    // 可以访问私有成员,因为它是一个友元类
    void printPersonDetails(Person person) {
      cout << person.name << ", " << person.age << endl;
    }
};
Salin selepas log masuk

Di sini, FriendClassPerson 类的友元类,因此它可以访问 nameage dan ahli persendirian yang lain.

Jalankan contoh

int main() {
  Person person{"John Doe", 30};
  FriendClass friendObj;  
  friendObj.printPersonDetails(person);
  return 0;
}
Salin selepas log masuk

Output:

John Doe, 30
Salin selepas log masuk

Atas ialah kandungan terperinci Penjelasan terperinci tentang fungsi rakan C++: Bagaimana untuk menyekat hak capaian fungsi rakan?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!