Rumah >pembangunan bahagian belakang >C++ >Hubungan antara fungsi rakan C++ dan beban berlebihan

Hubungan antara fungsi rakan C++ dan beban berlebihan

WBOY
WBOYasal
2024-04-16 11:06:02517semak imbas

Ya, fungsi rakan boleh dibebankan Seperti fungsi lain, fungsi rakan yang terlebih beban mesti mempunyai senarai parameter yang berbeza, seperti kelas Vector3D dalam contoh, yang mempunyai operator fungsi rakan terlampau muatan +() dan operator -(), membenarkan penambahan dan penolakan. operator untuk digunakan pada objek Vector3D.

C++ 友元函数与重载的关系

Hubungan antara fungsi rakan dan beban berlebihan dalam C++

Fungsi rakan

Fungsi rakan ialah jenis fungsi khas yang boleh mengakses ahli persendirian kelas lain. Dalam erti kata lain, ia bukan fungsi ahli kelas, tetapi mempunyai hak akses yang sama seperti fungsi ahli.

Tentukan fungsi rakan:

class ClassName {
  // ...

  friend function_name();
};

Pemuatan berlebihan

Pemuatan berlebihan ialah keupayaan untuk mencipta berbilang fungsi dengan nama yang sama tetapi senarai parameter yang berbeza dalam skop yang sama. Ini bermakna apabila fungsi terlebih beban dipanggil, pengkompil akan menentukan fungsi yang hendak dipanggil berdasarkan argumen.

Interaksi antara fungsi rakan dan lebih muatan

Fungsi rakan boleh menjadi lebih muatan. Seperti fungsi lain, fungsi rakan yang terlebih beban mesti mempunyai senarai parameter yang berbeza.

Kes praktikal

Contoh kelas:

class Vector3D {
  double x, y, z;

public:
  Vector3D(double x, double y, double z) : x(x), y(y), z(z) {}

  friend Vector3D operator+(const Vector3D& lhs, const Vector3D& rhs);
  friend Vector3D operator-(const Vector3D& lhs, const Vector3D& rhs);
};

Fungsi rakan terlampau beban:

Vector3D operator+(const Vector3D& lhs, const Vector3D& rhs) {
  return Vector3D(lhs.x + rhs.x, lhs.y + rhs.y, lhs.z + rhs.z);
}

Vector3D operator-(const Vector3D& lhs, const Vector3D& rhs) {
  return Vector3D(lhs.x - rhs.x, lhs.y - rhs.y, lhs.z - rhs.z);
}

Penggunaan: ini dan kita tambahkan pengendali tarikan.

Atas ialah kandungan terperinci Hubungan antara fungsi rakan C++ dan beban berlebihan. 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