Ralat sintaks C++: Pengendali terlampau beban mestilah fungsi ahli Bagaimana untuk membetulkannya?

PHPz
Lepaskan: 2023-08-22 08:22:44
asal
976 orang telah melayarinya

C++ ialah bahasa pengaturcaraan yang popular dengan keupayaan pengaturcaraan berorientasikan objek yang berkuasa. Apabila pengaturcaraan dalam C++, kadangkala anda mungkin menghadapi beberapa ralat sintaks. Artikel ini akan membincangkan ralat biasa, "Pengendali terlampau beban mesti menjadi fungsi ahli" dan menyediakan penyelesaian untuk menyelesaikan masalah tersebut.

Dalam C++, pengendali boleh dibebankan untuk melaksanakan pelbagai operasi menggunakan objek kelas tersuai. Sebagai contoh, pengendali "+" boleh dibebankan untuk melaksanakan penambahan antara dua objek kelas tersuai. Lebihan beban operator boleh dilaksanakan melalui fungsi ahli atau fungsi global.

Apabila kami mengisytiharkan fungsi operator terlebih beban, kami mesti menentukan sama ada ia adalah fungsi ahli atau fungsi global. Jika menggunakan fungsi ahli, fungsi lebihan pengendali mesti menjadi fungsi ahli kelas. Walau bagaimanapun, kadangkala kami mungkin menggunakan fungsi bukan ahli untuk lebihan muatan operator, dan kemudian kami akan menerima mesej ralat "Operator yang terlebih muatan mestilah fungsi ahli."

Untuk menyelesaikan ralat ini, kita boleh menukar fungsi lebih muatan operator kepada fungsi ahli kelas.

Katakan kita mahu membebankan operator "+" untuk melaksanakan operasi penambahan antara dua objek kelas tersuai. Kelas kami dinamakan "Nombor" dan ia mempunyai dua pembolehubah ahli persendirian num1 dan num2. Kami boleh mengisytiharkan fungsi operator terlebih beban menggunakan kod berikut:

Number operator+(const Number& num1, const Number& num2) {
  Number sum;
  sum.num1 = num1.num1 + num2.num1;
  sum.num2 = num1.num2 + num2.num2;
  return sum;
}
Salin selepas log masuk

Dalam kod ini, kami menggunakan fungsi global untuk membebankan operator "+". Ini salah kerana kita perlu menukarnya kepada fungsi ahli. Untuk melakukan ini, kita perlu mengisytiharkannya sebagai fungsi ahli kelas Nombor dan menggunakan operator "+" sebagai nama fungsi. Kod yang diubah suai kelihatan seperti ini:

class Number {
public:
  Number operator+(const Number& num) {
    Number sum;
    sum.num1 = num1 + num.num1;
    sum.num2 = num2 + num.num2;
    return sum;
  }
  
private:
  int num1;
  int num2;
};
Salin selepas log masuk

Dalam kod yang diubah suai ini, kami mengisytiharkan fungsi operator terlebih beban sebagai fungsi ahli kelas Nombor dan menggunakan operator "+" sebagai nama fungsi. Sekarang, kita boleh menggunakan kod berikut untuk melakukan penambahan antara dua objek Nombor:

Number num1;
num1.num1 = 1;
num1.num2 = 2;

Number num2;
num2.num1 = 3;
num2.num2 = 4;

Number sum = num1 + num2;
Salin selepas log masuk

Dengan cara ini, kita boleh berjaya membebankan operator "+" dan melakukan penambahan antara dua objek Nombor.

Ringkasnya, dalam C++, operator yang terlebih beban mesti dilaksanakan menggunakan fungsi ahli. Jika kod semasa menggunakan fungsi bukan ahli untuk melaksanakan lebihan beban operator, untuk membetulkan masalah ini, kita boleh menukarnya menjadi fungsi ahli, mengisytiharkan fungsi sebagai fungsi ahli kelas dan menggunakan operator sebagai nama fungsi.

Atas ialah kandungan terperinci Ralat sintaks C++: Pengendali terlampau beban mestilah fungsi ahli Bagaimana untuk membetulkannya?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!