Rumah > pembangunan bahagian belakang > C++ > 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
Lepaskan: 2024-04-28 21:42:02
asal
1200 orang telah melayarinya

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:

1

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

Salin selepas log masuk

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

1

friend int getPrivateData(MyClass& object);

Salin selepas log masuk

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

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

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

实战案例

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

1

2

3

4

5

6

7

class MyClass {

private:

    int x;

public:

    int getX();

    void setX(int value);

};

Salin selepas log masuk

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

1

2

3

friend int getPrivateData(MyClass& object) {

    return object.x;

}

Salin selepas log masuk

使用友元函数

我们可以使用友元函数来访问 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: 🎜

1

2

3

4

5

6

7

int main() {

    MyClass object;

    object.setX(10);

    int privateData = getPrivateData(object);

    cout << "Private data: " << privateData << endl;

    return 0;

}

Salin selepas log masuk
🎜Untuk mengakses MyClass< /code> ahli data peribadi <code>x, kami boleh mengisytiharkan fungsi rakan: 🎜

1

Private data: 10

Salin selepas log masuk
🎜🎜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!

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