Rumah > pembangunan bahagian belakang > C++ > Penjelasan terperinci tentang fungsi rakan C++: Apakah batasan fungsi rakan apabila mengakses ahli persendirian?

Penjelasan terperinci tentang fungsi rakan C++: Apakah batasan fungsi rakan apabila mengakses ahli persendirian?

PHPz
Lepaskan: 2024-04-29 12:15:01
asal
327 orang telah melayarinya

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++ 友元函数详解:友元函数在访问私有成员时的限制?

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:

  • Fungsi rakan hanya boleh mengakses ahli persendirian kelas semasa dan tidak boleh mengakses ahli persendirian kelas yang diwarisi.
  • Fungsi rakan tidak boleh mengubah suai ahli persendirian secara langsung.

Kes praktikal

Katakan kita mempunyai kelas Pelajar, yang mempunyai nama ahli peribadi dan 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;
}
Salin selepas log masuk

输出:

Name: Jane Doe
Salin selepas log masuk

在这个示例中,友元函数 printStudentInfo() 可以访问私有成员 namerrreee

🎜Output: 🎜🎜rrreee🎜Dalam contoh ini, fungsi rakan printStudentInfo() boleh mengakses nama ahli persendirian, tetapi tidak boleh mengubah suainya. Di samping itu, perlu diingatkan bahawa fungsi rakan hanya boleh mengakses ahli kelas melalui rujukan atau petunjuk, dan tidak boleh menggunakan ahli objek secara langsung. 🎜

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!

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