Overloading operator
Kata operator
kunci mendeklarasikan fungsi yang menentukan arti simbol operator apa saat diterapkan ke instans kelas. Ini memberi operator lebih dari satu arti, atau "kelebihan beban" itu. Pengkompilasi membedakan antara arti operator yang berbeda dengan memeriksa jenis operand-nya.
Sintaks
type
operator
operator-symbol(parameter-list)
Keterangan
Anda dapat menentukan ulang fungsi sebagian besar operator bawaan secara global atau berdasarkan kelas demi kelas. Operator yang kelebihan beban diimplementasikan sebagai fungsi.
Nama operator yang kelebihan beban adalah operator
x, di mana x adalah operator seperti yang muncul dalam tabel berikut. Misalnya, untuk membebani operator penambahan secara berlebihan, Anda menentukan fungsi yang disebut operator+. Demikian pula, untuk membebani operator penambahan/penugasan, +=, tentukan fungsi yang disebut operator+=.
Operator yang Dapat Ditentukan Ulang
Operator | Nama | Jenis |
---|---|---|
, | Koma | Biner |
! | LOGIS NOT | Unary |
!= | Ketidaksetaraan | Biner |
% | Modulus | Biner |
%= | Penetapan modulus | Biner |
& | Bitwise AND | Biner |
& | Alamat | Unary |
&& | Logika AND | Biner |
&= | Penugasan BITWISE AND | Biner |
( ) | Panggilan Fungsi | — |
( ) | Cast Operator | Unary |
* |
Perkalian | Biner |
* |
Dereferensi penunjuk | Unary |
*= |
Penugasan perkalian | Biner |
+ | Tambahan | Biner |
+ | Unary Plus | Unary |
++ | Kenaikan 1 | Unary |
+= | Penugasan penambahan | Biner |
- | Pengurangan | Biner |
- | Negasi unary | Unary |
-- | Keputusan 1 | Unary |
-= | Penugasan pengurangan | Biner |
-> | Pilihan anggota | Biner |
->* |
Pilihan pointer-to-member | Biner |
/ | Divisi | Biner |
/= | Penugasan divisi | Biner |
< | Kurang dari | Biner |
<< | Shift kiri | Biner |
<<= | Penetapan shift kiri | Biner |
<= | Kurang dari atau sama dengan | Biner |
= | Penugasan | Biner |
== | Persamaan | Biner |
> | Lebih dari | Biner |
>= | Lebih dari atau sama dengan | Biner |
>> | Shift kanan | Biner |
>>= | Penetapan shift kanan | Biner |
[ ] | Subskrip array | — |
^ | Eksklusif ATAU | Biner |
^= | Penugasan OR Eksklusif | Biner |
| | Bitwise inklusif ATAU | Biner |
|= | Penugasan OR inklusif bitwise | Biner |
|| | Logika OR | Biner |
~ | Pelengkap seseorang | Unary |
delete |
Delete | — |
new |
Baru | — |
operator konversi | operator konversi | Unary |
1 Dua versi operator kenaikan dan penurunan unary ada: preincrement dan postincrement.
Lihat Aturan Umum untuk Kelebihan Beban Operator untuk informasi selengkapnya. Batasan pada berbagai kategori operator yang kelebihan beban dijelaskan dalam topik berikut:
Operator yang diperlihatkan dalam tabel berikut tidak dapat kelebihan beban. Tabel ini mencakup simbol prapemrosan # dan ##.
Operator yang tidak dapat diredefinasi
Operator | Nama |
---|---|
. | Pilihan anggota |
.* |
Pilihan pointer-to-member |
:: | Resolusi cakupan |
? : | Kondisional |
# | Preprocessor dikonversi ke string |
## | Penggalian praproscesor |
Meskipun operator yang kelebihan beban biasanya dipanggil secara implisit oleh kompilator ketika mereka ditemui dalam kode, operator dapat dipanggil secara eksplisit dengan cara yang sama seperti anggota atau fungsi nonmember disebut:
Point pt;
pt.operator+( 3 ); // Call addition operator to add 3 to pt.
Contoh
Contoh berikut membebani + operator untuk menambahkan dua bilangan kompleks dan mengembalikan hasilnya.
// operator_overloading.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
struct Complex {
Complex( double r, double i ) : re(r), im(i) {}
Complex operator+( Complex &other );
void Display( ) { cout << re << ", " << im << endl; }
private:
double re, im;
};
// Operator overloaded using a member function
Complex Complex::operator+( Complex &other ) {
return Complex( re + other.re, im + other.im );
}
int main() {
Complex a = Complex( 1.2, 3.4 );
Complex b = Complex( 5.6, 7.8 );
Complex c = Complex( 0.0, 0.0 );
c = a + b;
c.Display();
}
6.8, 11.2
Di bagian ini
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk