Apakah peraturan pengisytiharan untuk fungsi rakan C++?

WBOY
Lepaskan: 2024-04-16 08:57:02
asal
942 orang telah melayarinya

Peraturan untuk pengisytiharan fungsi rakan adalah seperti berikut: pengisytiharan mestilah di luar kelas. Boleh diisytiharkan sebagai fungsi ahli atau fungsi global. Objek kelas boleh dihantar melalui penunjuk atau rujukan.

C++ 友元函数的声明规则有哪些?

C++ Friend Function Declaration Rules

Friend Function Declaration

Fungsi rakan ialah fungsi khas yang boleh mengakses ahli peribadi kelas. Untuk mengisytiharkan fungsi rakan dalam C++, gunakan kata kunci rakan seperti berikut: friend 关键字,如下所示:

// 声明 MyClass 类的友元函数 printInfo()
friend void printInfo(const MyClass& obj);
Salin selepas log masuk

声明规则

以下是在 C++ 中声明友元函数的规则:

  • 友元函数的声明必须位于类的外部。
  • 友元函数可以声明为成员函数(带作用域解析符)或全局函数(不带作用域解析符)。
  • 可以通过指针或引用来传递类的对象。

实战案例

考虑以下 MyClass 类,它有私有成员变量 _data

class MyClass {
private:
    int _data;
public:
    // ...
};
Salin selepas log masuk

我们可以定义一个友元函数 printInfo() 来访问 _data

// 声明 printInfo() 为 MyClass 的友元函数
friend void printInfo(const MyClass& obj) {
    std::cout << "Data: " << obj._data << std::endl;
}
Salin selepas log masuk

在主函数中,我们可以实例化 MyClass

int main() {
    MyClass obj;
    obj._data = 42;  // 访问私有成员(仅在友元函数中允许)
    printInfo(obj);  // 调用友元函数
    return 0;
}
Salin selepas log masuk

Peraturan Pengisytiharan

Berikut ialah peraturan untuk mengisytiharkan fungsi rakan dalam C++:🎜
  • Pengisytiharan fungsi rakan mestilah di luar kelas.
  • Fungsi rakan boleh diisytiharkan sebagai fungsi ahli (dengan penyelesai skop) atau fungsi global (tanpa penyelesai skop).
  • Objek kelas boleh dihantar melalui penunjuk atau rujukan.
🎜🎜Kes praktikal🎜🎜🎜Pertimbangkan kelas MyClass berikut, yang mempunyai pembolehubah ahli persendirian _data: 🎜
Data: 42
Salin selepas log masuk
🎜Kita boleh mentakrifkan rakan Fungsi printInfo() untuk mengakses _data: 🎜rrreee🎜Dalam fungsi utama, kita boleh membuat instantiate objek MyClass dan memanggil fungsi rakan ke cetak data peribadi: 🎜rrreee🎜🎜Output: 🎜🎜rrreee

Atas ialah kandungan terperinci Apakah peraturan pengisytiharan untuk fungsi rakan C++?. 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