Fungsi rakan membenarkan fungsi bukan ahli mengakses ahli persendirian dan memainkan peranan dalam berbilang warisan, membenarkan fungsi kelas terbitan mengakses ahli persendirian kelas asas.
C++ Penjelasan terperinci tentang fungsi rakan: Peranan fungsi rakan dalam pelbagai warisan
Pengenalan kepada fungsi rakan
Fungsi rakan ialah fungsi khas yang diberikan, dan Tiada kebenaran untuk mengakses fungsi peribadi objek kelas ini diperlukan. Ia sering digunakan untuk membenarkan fungsi bukan ahli mengakses data peribadi.
Sintaks:
class ClassName { ... // 类成员 friend FunctionName; };
Peranan rakan berfungsi dalam berbilang warisan
Dalam berbilang warisan, kelas terbitan boleh mewarisi ahli data dan kaedah daripada berbilang kelas asas. Jika fungsi dalam kelas terbitan perlu mengakses ahli persendirian kelas asas, fungsi itu boleh diisytiharkan sebagai fungsi rakan.
Kes praktikal
Andaikan kita mempunyai kelas Base
dan kelas terbitan Derived
yang mewarisi daripada Base
: Base
类和一个从 Base
继承的派生类 Derived
:
class Base { private: int data; }; class Derived : public Base { public: void printData() { std::cout << data << std::endl; } friend void printData2(Derived& obj); };
由于 data
是 Base
的私有成员,Derived
中的 printData()
函数无法直接访问它。因此,我们将 printData2()
函数声明为 Derived
的友元函数:
void printData2(Derived& obj) { std::cout << obj.data << std::endl; }
现在,printData2()
可以访问 Derived
中私有的 data
int main() { Derived obj; obj.printData(); printData2(obj); }
Base
dan tidak boleh diakses secara langsung oleh fungsi printData()
dalam Derived
. Oleh itu, kami mengisytiharkan fungsi printData2()
sebagai fungsi rakan Derived
: 0 0
printData2()
boleh mengakses Ahli <code>data
peribadi dalam Derived. Penggunaan:
🎜rrreee🎜Output: 🎜rrreeeAtas ialah kandungan terperinci Penjelasan terperinci tentang fungsi rakan C++: Apakah peranan fungsi rakan dalam pelbagai warisan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!