Fungsi rakan boleh mengakses ahli persendirian, tetapi dihadkan: mereka hanya boleh mengakses ahli persendirian kelas semasa (tidak boleh mengakses kelas yang diwarisi), dan tidak boleh mengubah suainya secara langsung. Dalam pertempuran sebenar, fungsi rakan boleh mengakses ahli persendirian melalui rujukan atau petunjuk, seperti mengakses nama ahli persendirian kelas Pelajar dan mencetak maklumat pelajar.
C++ Fungsi Rakan Penjelasan Terperinci: Sekatan untuk Mengakses Ahli Persendirian
Apakah fungsi rakan?
Fungsi rakan ialah fungsi yang bukan milik mana-mana kelas, tetapi boleh mengakses semua ahli yang diisytiharkan dalam kelas (termasuk ahli persendirian). Fungsi rakan membenarkan interaksi rapat antara kelas yang berbeza dan membolehkan penggunaan fleksibel kelas terkapsul.
Sekatan ke atas fungsi rakan mengakses ahli persendirian
Terdapat beberapa sekatan apabila fungsi rakan mengakses ahli persendirian:
Kes praktikal
Katakan kita mempunyai kelas Pelajar
, yang mempunyai getAge()
ahli awam . Kami mencipta fungsi rakan printStudentInfo()
untuk mengakses nama
ahli persendirian dan mencetak maklumat pelajar. Student
类,它有一个私有成员 name
和一个公有成员 getAge()
。我们创建一个友元函数 printStudentInfo()
来访问私有成员 name
并打印学生信息。
class Student { private: string name; public: int getAge(); // 声明友元函数 friend void printStudentInfo(const Student& student); }; void printStudentInfo(const Student& student) { // 可以访问私有成员 cout << "Name: " << student.name << endl; // 不能修改私有成员 // student.name = "John Doe"; // 错误 } int main() { Student student1; student1.setName("Jane Doe"); printStudentInfo(student1); return 0; }
输出:
Name: Jane Doe
在这个示例中,友元函数 printStudentInfo()
可以访问私有成员 name
rrreee
printStudentInfo()
boleh mengakses Atas ialah kandungan terperinci Penjelasan terperinci tentang fungsi rakan C++: Apakah batasan fungsi rakan apabila mengakses ahli persendirian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!