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
| Kural | Açıklama |
|---|---|
| Yeni Operatör Yaratılamaz | Sadece 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.