Private int value
operator Anahtar sözcüğünü ne belirten bir işlev bildirir operator-symbol bir sınıfın örneklerini uygulandığında anlamına gelir.Bu işleç birden fazla anlamı verir veya "overloads".Derleyici operatörün işlenenlerini türleri inceleyerek tarafından farklı anlamlarý ayırt eder.
type operator operator-symbol ( parameter-list )
Notlar
Genel olarak veya sınıf sınıf bazında en yerleşik işlecin işlevini tanımlayabilirsiniz.Aþýrý yüklenmiþ Ýþleçler işlevleri olarak uygulanır.
Fazla yüklenmiş işleç adıdır operatorx, burada x aşağıdaki tabloda göründüğü gibi operatördür.Örneğin, toplama operatörü tekrar için adında bir işlevi tanımlar operator+.Benzer şekilde, ek/atama iþleci +=, adında bir işlevi tanımlar operator+=.
Redefinable işleçler
İşleç |
Ad |
Tür |
---|---|---|
, |
Virgül |
İkili |
! |
Mantıksal değil |
Tekli |
!= |
Eşitsizlik |
İkili |
% |
Modül |
İkili |
%= |
Modül atama |
İkili |
& |
Bitsel ve |
İkili |
& |
Adresi |
Tekli |
&& |
Mantıksal and |
İkili |
&= |
Bitsel and ataması |
İkili |
( ) |
İşlev çağrısı |
— |
( ) |
Atama işlecinin |
Tekli |
* |
Çarpma |
İkili |
* |
İşaretçiye |
Tekli |
*= |
Çarpma ataması |
İkili |
+ |
Buna ek olarak |
İkili |
+ |
Tekli artı |
Tekli |
++ |
Artış 1 |
Tekli |
+= |
Toplama ataması |
İkili |
– |
Çıkarma |
İkili |
– |
Tekli Negatiflik |
Tekli |
–– |
Azaltma 1 |
Tekli |
–= |
Çıkarma ataması |
İkili |
–> |
Üye seçimi |
İkili |
–>* |
İşaretçiyi üye seçimi |
İkili |
/ |
Bölme |
İkili |
/= |
Bölme ataması |
İkili |
< |
Küçüktür |
İkili |
<< |
Sol shift |
İkili |
<<= |
Sol kaydırma ataması |
İkili |
<= |
Ya da eşit |
İkili |
= |
Atama |
İkili |
== |
Eşitlik |
İkili |
> |
Büyüktür |
İkili |
>= |
Sıfırdan büyük veya eşit |
İkili |
>> |
Sağa kaydırma |
İkili |
>>= |
Sağa kaydırma ataması |
İkili |
[ ] |
Dizi indisi |
— |
^ |
Exclusive veya |
İkili |
^= |
Özel veya atama |
İkili |
| |
Bitsel or dahil |
İkili |
|= |
Bitsel or Ataması (dahil) |
İkili |
|| |
Mantıksal or |
İkili |
~ |
Kişinin Tamamlayıcı |
Tekli |
delete |
Delete |
— |
new |
New |
— |
conversion operators |
dönüştürme işleçleri |
Tekli |
1 İki tekli sürümü artırmak ve azaltma işleçleri vardır: preincrement ve postincrement.
Bkz: Aþýrý yüklemesi için genel kurallar daha fazla bilgi için.Aþýrý yüklenmiþ Ýþleçler çeşitli kategorileri kısıtlamalar aşağıdaki bölümlerde açıklanmıştır:
Aşağıdaki tabloda gösterilen işleçleri aşırı yüklenemez.Önişlemci simgeleri içerir # ve ##.
Nonredefinable işleçler
Operator |
Name |
. |
Üye seçimi |
.* |
İşaretçiyi üye seçimi |
:: |
Kapsam çözünürlük |
? : |
Koşullu |
# |
Dize Önişlemci Dönüştür |
## |
Önişlemci Birleştir |
Kodu karşılaşıldığında aþýrý yüklenmiþ Ýþleçler genellikle dolaylı olarak derleyici tarafından denir olmakla birlikte, bunların herhangi bir üyesi ile aynı şekilde açıkça çağrılabilir veya dahil olmayan işlevi çağrılır:
Point pt;
pt.operator+( 3 ); // Call addition operator to add 3 to pt.
Örnek
Aşağıdaki örnek aþýrý yükleme + işleci iki karmaşık sayılar ve sonucu verir.
// 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();
}
Çıktı
6.8, 11.2