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++ 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
关键字声明。实战案例
考虑一个包含私有成员变量 x
的 MyClass
类:
class MyClass { private: int x; public: int getX(); void setX(int value); };
要访问 MyClass
的私有数据成员 x
,我们可以声明一个友元函数:
friend int getPrivateData(MyClass& object) { return object.x; }
使用友元函数
我们可以使用友元函数来访问 MyClass
rreee
Perbezaan antara fungsi dan fungsi global
🎜🎜Perbezaan utama antara fungsi rakan dan fungsi global adalah seperti berikut: 🎜rakan
, manakala fungsi global diisytiharkan menggunakan kata kunci extern
. 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; }
MyClass< /code> ahli data peribadi <code>x
, kami boleh mengisytiharkan fungsi rakan: 🎜Private data: 10
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!