Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah fungsi rakan C++ mengakses ahli persendirian?

Bagaimanakah fungsi rakan C++ mengakses ahli persendirian?

WBOY
WBOYasal
2024-04-15 17:27:02677semak imbas

Terdapat dua cara untuk fungsi rakan mengakses ahli persendirian dalam C++: mengisytiharkan fungsi rakan dalam kelas. Isytiharkan kelas sebagai kelas rakan supaya semua fungsi ahli dalam kelas boleh mengakses ahli peribadi kelas lain.

C++ 友元函数如何访问私有成员?

C++ Cara mengakses ahli persendirian dengan fungsi rakan

Fungsi rakan ialah fungsi yang ditakrifkan di luar kelas tetapi boleh mengakses ahli persendirian kelas. Terdapat dua cara untuk mencapai akses kepada ahli persendirian melalui fungsi rakan:

1 Isytihar fungsi rakan

Isytihar fungsi rakan dalam kelas, sintaksnya adalah seperti berikut:

class ClassName {
public:
  // 类成员...

  // 声明友元函数
  friend void friend_function();
};

Dengan cara ini, rakan yang diisytiharkan fungsi boleh Mengakses ahli peribadi kelas ini.

2. Istiharkan kelas rakan

Isytiharkan kelas sebagai kelas rakan, dan semua fungsi ahli dalam kelas boleh mengakses ahli persendirian kelas lain. Sintaksnya adalah seperti berikut:

class ClassName1 {
public:
  // 类成员...

  // 声明友元类
  friend class ClassName2;
};

Semua fungsi ahli yang diisytiharkan dalam ClassName2 boleh mengakses ahli peribadi ClassName1. ClassName2 中的成员函数都可以访问 ClassName1 的私有成员。

实战案例

考虑以下 C++ 代码:

class Person {
private:
  int age;
  string name;

public:
  // 友元函数
  friend void print_person_info(const Person& person);

  // 访问私有成员的友元函数
  void print_info() const {
    cout << "Name: " << name << endl;
    cout << "Age: " << age << endl;
  }
};

// 友元函数外部分类的定义
void print_person_info(const Person& person) {
  cout << "Name: " << person.name << endl;
  cout << "Age: " << person.age << endl;
}

int main() {
  Person person;
  person.name = "John";
  person.age = 30;

  person.print_info();
  print_person_info(person);

  return 0;
}

在这个例子中,print_person_info 函数是一个友元函数,它可以访问 Person 类的私有成员。在 Person 类中,print_info

Kes praktikal

🎜🎜Pertimbangkan kod C++ berikut: 🎜
Name: John
Age: 30
Name: John
Age: 30
🎜Dalam contoh ini, fungsi print_person_info ialah fungsi rakan yang mempunyai akses kepada sifat peribadi Orang kod> ahli kelas. Dalam kelas Orang, fungsi print_info juga mengakses ahli persendirian menggunakan pengisytiharan fungsi rakan. 🎜🎜Menjalankan kod di atas akan mengeluarkan: 🎜rrreee

Atas ialah kandungan terperinci Bagaimanakah fungsi rakan C++ mengakses ahli persendirian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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