Rumah >pembangunan bahagian belakang >C++ >Penjelasan terperinci tentang fungsi rakan C++: Bagaimana untuk menggunakan fungsi rakan dalam kelas templat?

Penjelasan terperinci tentang fungsi rakan C++: Bagaimana untuk menggunakan fungsi rakan dalam kelas templat?

王林
王林asal
2024-04-29 09:45:02812semak imbas

Dalam C++, fungsi rakan boleh mengakses ahli peribadi kelas tanpa menjadi fungsi ahli kelas. Dalam kelas templat, pengisytiharan fungsi rakan adalah serupa dengan pengisytiharan dalam kelas biasa dan mesti diisytiharkan di luar definisi kelas. Sebagai contoh, untuk mengisytiharkan fungsi rakan printValue dalam kelas templat MyClass, anda perlu mengisytiharkan fungsi di luar definisi kelas menggunakan kata kunci rakan. Fungsi rakan hanya boleh mengakses ahli kelas di mana ia diisytiharkan sebagai rakan.

C++ 友元函数详解:友元函数在模板类中的使用?

C++ Friend Function Penjelasan Terperinci: Gunakan dalam Kelas Templat

Pengenalan

Fungsi rakan ialah jenis fungsi khas dalam C++ yang dibenarkan untuk mengakses ahli persendirian dalam kelas . fungsi kelas. Fungsi rakan berguna dalam situasi tertentu, seperti apabila data atau fungsi perlu dikongsi merentasi sempadan kelas.

Fungsi rakan dalam kelas templat

Mengisytiharkan fungsi rakan dalam kelas templat sangat serupa dengan dalam kelas biasa. Contoh berikut menunjukkan cara mengisytiharkan fungsi rakan printValue dalam kelas templat MyClass: MyClass 中声明友元函数 printValue

template <typename T>
class MyClass {
public:
  T value;

  friend void printValue(const MyClass<T>& obj) {
    std::cout << "Value: " << obj.value << std::endl;
  }
};

使用友元函数

要使用友元函数,必须在类的定义外部声明该函数。可以使用 friend 关键字来指定友元函数,如下所示:

template <typename T>
void printValue(const MyClass<T>& obj);

实战案例

假设我们有一个 Node 模板类,其中包含私有数据成员 value,并想要声明一个友元函数 display 来显示节点的值。

template <typename T>
class Node {
public:
  T value;

  friend void display(const Node<T>& node) {
    std::cout << "Node Value: " << node.value << std::endl;
  }
};

在编写友元函数时,需要注意以下几点:

  • 函数必须在类的定义外部声明。
  • 函数原型不能有 constvirtualrrreee
  • Menggunakan Fungsi Rakan
🎜Untuk menggunakan fungsi rakan, anda mesti Mengisytiharkan berfungsi di luar definisi. Fungsi rakan boleh ditentukan menggunakan kata kunci rakan, seperti yang ditunjukkan di bawah: 🎜rrreee🎜🎜Kes praktikal🎜🎜🎜Andaikan kita mempunyai kelas templat Nod yang mengandungi ahli data peribadi nilai dan ingin mengisytiharkan fungsi rakan paparan untuk memaparkan nilai nod. 🎜rrreee🎜Apabila menulis fungsi rakan, anda perlu memberi perhatian kepada perkara berikut: 🎜
    🎜Fungsi mesti diisytiharkan di luar definisi kelas. 🎜🎜Prototaip fungsi tidak boleh mempunyai pengubah const atau maya. 🎜🎜Sesuatu fungsi hanya boleh mengakses ahli kelas yang mengisytiharkannya sebagai rakan. 🎜🎜

Atas ialah kandungan terperinci Penjelasan terperinci tentang fungsi rakan C++: Bagaimana untuk menggunakan fungsi rakan dalam kelas templat?. 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