Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penjelasan terperinci tentang fungsi rakan C++: Apakah perbezaan antara fungsi rakan dan fungsi global?

Penjelasan terperinci tentang fungsi rakan C++: Apakah perbezaan antara fungsi rakan dan fungsi global?

WBOY
WBOYasal
2024-04-28 21:42:021099semak imbas

Fungsi rakan boleh mengakses ahli data peribadi dan dilindungi kelas, tetapi fungsi global tidak boleh diisytiharkan dalam pengisytiharan kelas, dan fungsi global diisytiharkan di luar kelas Gunakan kata kunci rakan untuk mengisytiharkan fungsi rakan, dan gunakan extern kata kunci untuk mengisytiharkan fungsi global. Fungsi rakan mendapat kebenaran untuk mengakses pembolehubah ahli kelas melalui pengisytiharan Contohnya, dengan mengisytiharkan fungsi rakan getPrivateData, anda boleh mengakses pembolehubah peribadi x kelas MyClass.

C++ 友元函数详解:友元函数和全局函数的区别?

C++ Penjelasan terperinci tentang fungsi rakan

Perbezaan antara fungsi rakan dan fungsi global

Dalam C++, fungsi rakan ialah fungsi khas yang boleh mengakses fungsi peribadi yang diisytiharkan dalam fungsi ahli kelas dan dilindungi ahli data. Sebaliknya, fungsi global diisytiharkan di luar kelas dan tidak mempunyai akses kepada ahli data peribadi dan dilindungi.

Sintaks fungsi rakan

Sintaks fungsi rakan adalah seperti berikut:

friend 返回类型 函数名(参数列表);

Contohnya, isytiharkan fungsi rakan yang boleh mengakses ahli data peribadi dalam MyClass: MyClass 中私有数据成员的友元函数:

friend int getPrivateData(MyClass& object);

友元函数和全局函数的区别

友元函数和全局函数的主要区别如下:

  • 访问范围:友元函数可以访问类中的私有和受保护的数据成员,而全局函数不能。
  • 作用域:友元函数可以在类的声明中声明,而全局函数在类外声明。
  • 声明方式:友元函数使用 friend 关键字声明,而全局函数使用 extern 关键字声明。

实战案例

考虑一个包含私有成员变量 xMyClass 类:

class MyClass {
private:
    int x;
public:
    int getX();
    void setX(int value);
};

要访问 MyClass 的私有数据成员 x,我们可以声明一个友元函数:

friend int getPrivateData(MyClass& object) {
    return object.x;
}

使用友元函数

我们可以使用友元函数来访问 MyClassrreee

Perbezaan antara fungsi dan fungsi global

🎜🎜Perbezaan utama antara fungsi rakan dan fungsi global adalah seperti berikut: 🎜
  • 🎜Skop akses: 🎜Fungsi rakan boleh mengakses ahli data peribadi dan dilindungi dalam kelas, manakala global fungsi Fungsi tidak boleh.
  • 🎜Skop: 🎜Fungsi rakan boleh diisytiharkan dalam pengisytiharan kelas, manakala fungsi global diisytiharkan di luar kelas.
  • 🎜Kaedah pengisytiharan: 🎜Fungsi rakan diisytiharkan menggunakan kata kunci rakan, manakala fungsi global diisytiharkan menggunakan kata kunci extern.
🎜🎜Kes praktikal🎜🎜🎜Pertimbangkan kelas MyClass yang mengandungi pembolehubah ahli persendirian x: 🎜
int main() {
    MyClass object;
    object.setX(10);
    int privateData = getPrivateData(object);
    cout << "Private data: " << privateData << endl;
    return 0;
}
🎜Untuk mengakses MyClass ahli data peribadi <code>x, kami boleh mengisytiharkan fungsi rakan: 🎜
Private data: 10
🎜🎜Menggunakan fungsi rakan🎜🎜🎜Kami boleh menggunakan fungsi rakan untuk mengakses Kelas Saya' ahli data peribadi: 🎜rrreee🎜Menjalankan kod ini akan mengeluarkan: 🎜rrreee

Atas ialah kandungan terperinci Penjelasan terperinci tentang fungsi rakan C++: Apakah perbezaan antara fungsi rakan dan fungsi global?. 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