Rumah > Artikel > pembangunan bahagian belakang > Apakah kesan fungsi rakan terhadap warisan kelas?
Warisan fungsi rakan Apabila subkelas mewarisi kelas dengan fungsi rakan: Subkelas tidak boleh mewarisi fungsi rakan. Fungsi rakan kelas induk boleh mengakses ahli peribadi kelas anak. Fungsi rakan subkelas tidak boleh mengakses ahli peribadi kelas induk.
Impak fungsi rakan pada warisan kelas
Preface
Fungsi rakan ialah fungsi C++ khas yang boleh mengakses ahli persendirian kelas di luar skop kelas. Apabila bercakap tentang pewarisan kelas, adalah penting untuk memahami tingkah laku fungsi rakan. Fungsi dan Warisan Rakan Subkelas tidak boleh mewarisi fungsi rakan kelas induk.
Fungsi rakan kelas induk boleh mengakses ahli persendirian kelas anak: Jika kelas induk dan kelas anak mengenali satu sama lain (iaitu, kelas induk ialah kelas asas kelas anak atau kelas anak ialah kelas terbitan kelas induk), maka fungsi Rakan kelas induk kelas boleh mengakses ahli peribadi subkelas tersebut.
Fungsi rakan subkelas tidak boleh mengakses ahli persendirian kelas induk:#include <iostream> class Base { friend void print(Base& b); // 父类友元函数 private: int x; }; class Derived : public Base { friend void access(Derived& d); // 子类友元函数 private: int y; }; void print(Base& b) { std::cout << b.x << std::endl; } // 父类友元函数访问私有成员 x void access(Derived& d) { std::cout << d.x << " " << d.y << std::endl; } // 子类友元函数访问私有成员 x 和 y int main() { Base b; b.x = 10; print(b); // 输出:10 Derived d; d.x = 20; d.y = 30; access(d); // 输出:20 30 print(d); // 输出:20 }Dalam contoh ini:
x
ahli peribadi. Subkelas access()
, yang boleh mengakses ahli persendirian kelas induk x
. Objek Derived
boleh diakses oleh kelas induk Base
fungsi rakan print()
, tetapi Tidak dapat mengakses ahli peribadi x
kelas induk.
Atas ialah kandungan terperinci Apakah kesan fungsi rakan terhadap warisan kelas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!