Aracılığıyla paylaş


İşleç aşırı yüklemesi

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