Operator Overloading: C++ Operatörlerine Yeni Görevler Atama

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16

Operator Overloading: Sembollere Yeni Kimlikler​


Operatör aşırı yükleme, kodun okunabilirliğini artırır ve sınıflarınızın sanki yerleşik bir veri tipiymiş (int, double gibi) gibi davranmasını sağlar.



1. Temel Mantık ve Yazım Kuralları​


Bir operatörü aşırı yüklemek için operator anahtar kelimesini ve ardından yüklemek istediğiniz sembolü kullanırsınız.

C++:
class Vektor {
public:
int x, y;

Vektor(int x = 0, int y = 0) : x(x), y(y) {}

// '+' operatörünü aşırı yüklüyoruz
Vektor operator+(const Vektor& diger) {
    return Vektor(x + diger.x, y + diger.y);
}

};



2. Sık Kullanılan Operatör Türleri​


Aritmetik Operatörler (+, -, *, /)​

Nesneler arasında matematiksel işlemler yapmak için kullanılır. Genellikle yeni bir nesne döndürürler.

Karşılaştırma Operatörleri (==, !=, <, >)​

İki nesnenin eşitliğini veya büyüklüğünü kontrol etmek için kullanılır. bool değer döndürürler.
C++:
bool operator==(const Vektor& diger) {
return (x == diger.x && y == diger.y);
}

Akış Operatörleri (<<, >>)​

Nesneleri doğrudan cout ile yazdırmak veya cin ile okumak için kullanılır. Bu operatörler genellikle friend olarak tanımlanır.

C++:
friend ostream& operator<<(ostream& os, const Vektor& v) {
os << "(" << v.x << ", " << v.y << ")";
return os;
}



3. Kurallar ve Sınırlamalar​


KuralAçıklama
Yeni Operatör YaratılamazSadece dilde var olan (+, * vb.) operatörler yüklenebilir. ** gibi yeni bir sembol üretilemez.
Öncelik Sırası DeğişmezÇarpmanın toplamaya göre önceliği her zaman korunur.
En Az Bir Nesne ŞartıSadece temel tipler (int+int gibi) arasındaki operatörler değiştirilemez; en az bir taraf kullanıcı tanımlı sınıf olmalıdır.
Aşırı Yüklenemeyenler. (nokta), :: (kapsam), ?: (ternary) ve sizeof operatörleri aşırı yüklenemez.



Sonuç​


Operator Overloading, doğru kullanıldığında kodu bir şiir gibi akıcı hale getirir. Ancak "kötüye kullanım" (örneğin + operatörüne çıkarma işlemi yaptırmak) kodun anlaşılmasını imkansız kılar. Operatörün orijinal anlamına sadık kalarak aşırı yükleme yapmak her zaman en iyi yaklaşımdır.
 
Geri
Üst