Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
anahtar sözcüğü, bir sınıfın operator
örneklerine uygulandığında işleç simgesinin ne anlama geldiğini belirten bir işlev bildirir. Bu, işlecine birden fazla anlam verir veya "aşırı yükler". Derleyici, işlenenlerinin türlerini inceleyerek bir işlecin farklı anlamlarını birbirinden ayırır.
Sözdizimi
type
operator
operator-symbol ( parametre-listesi )
Açıklamalar
Yerleşik işleçlerin çoğunun işlevini genel olarak veya sınıf bazında yeniden tanımlayabilirsiniz. Aşırı yüklenmiş işleçler işlev olarak uygulanır.
Aşırı yüklenmiş işlecin adı x'tir operator
; burada x, aşağıdaki tabloda gösterildiği gibi işleçtir. Örneğin, toplama işlecini aşırı yüklemek için operator+ adlı bir işlev tanımlarsınız. Benzer şekilde, ekleme/atama işlecini +=aşırı yüklemek için operator+= adlı bir işlev tanımlayın.
Yeniden Tanımlanabilir İşleçler
Operatör | Adı | Tip |
---|---|---|
, | Comma | İkilik |
! | Mantıksal DEĞİl | Birli |
!= | Eşitsizlik | İkilik |
% | Mod | İkilik |
%= | Mod ataması | İkilik |
& | Bit düzeyinde AND | İkilik |
& | Şunun adresi: | Birli |
&& | Mantıksal VE | İkilik |
&= | Bit düzeyinde AND ataması | İkilik |
( ) | İşlev çağrısı | — |
( ) | Atama İşleci | Birli |
* |
Çarpma | İkilik |
* |
İşaretçi başvurusu kaldırma | Birli |
*= |
Çarpma ataması | İkilik |
+ | Ekleme | İkilik |
+ | Birli Artı | Birli |
++ | Artım 1 | Birli |
+= | Toplama ataması | İkilik |
- | Çıkarma | İkilik |
- | Tekli olumsuzlama | Birli |
-- | Azaltma 1 | Birli |
-= | Çıkarma ataması | İkilik |
-> | Üye seçimi | İkilik |
->* |
Üyeye işaretçi seçimi | İkilik |
/ | Bölüm | İkilik |
/= | Bölme ataması | İkilik |
< | Küçüktür | İkilik |
<< | Sola kaydırma | İkilik |
<<= | Sol vardiya ataması | İkilik |
<= | Küçüktür veya eşittir | İkilik |
= | Atama | İkilik |
== | Eşitlik | İkilik |
> | Büyüktür | İkilik |
>= | Büyüktür veya eşittir | İkilik |
>> | Sağa kaydırma | İkilik |
>>= | Sağ vardiya ataması | İkilik |
[ ] | Dizi alt simgesi | — |
^ | Özel VEYA | İkilik |
^= | Özel VEYA ataması | İkilik |
| | Bit düzeyinde kapsamalı OR | İkilik |
|= | Bit düzeyinde kapsamalı OR ataması | İkilik |
|| | Mantıksal VEYA | İkilik |
~ | Birinin tamamlayıcısı | Birli |
delete |
Sil | — |
new |
Yeni | — |
dönüştürme işleçleri | dönüştürme işleçleri | Birli |
1 Birli artış ve azaltma işleçlerinin iki sürümü vardır: öncrement ve postincrement.
Daha fazla bilgi için bkz . İşleç Aşırı Yüklemesi için Genel Kurallar. Aşırı yüklenmiş işleçlerin çeşitli kategorilerindeki kısıtlamalar aşağıdaki konularda açıklanmıştır:
Aşağıdaki tabloda gösterilen işleçler aşırı yüklenemez. Tabloda ön işlemci sembolleri # ve ##bulunur.
Tanımlanamaz İşleçler
Operatör | Veri Akışı Adı |
---|---|
. | Üye seçimi |
.* |
Üyeye işaretçi seçimi |
:: | Kapsam çözümlemesi |
? : | Koşullu |
# | Önişlemci dizeye dönüştürüyor |
## | Önişlemci birleştirme |
Aşırı yüklenmiş işleçler genellikle kodda karşılaşıldığında derleyici tarafından örtük olarak çağrılsa da, herhangi bir üye veya üye olmayan işlevin çağrıldığı gibi açıkça çağrılabilir:
Point pt;
pt.operator+( 3 ); // Call addition operator to add 3 to pt.
Örnek
Aşağıdaki örnek, iki karmaşık sayı eklemek için işleci aşırı yükler + ve sonucu döndürür.
// 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
Bu bölümde
Ayrıca bkz.
C++ Yerleşik İşleçler, Öncelik ve İlişkisellik
Anahtar Sözcükler