Operatörlere bilinen özellikleri dışında başka özellikler kazandırmak mümkündür. C++ da bu işleme operatörlerin aşırı yüklenmesi adı verilmektedir.
Bir operatörü aşırı yüklemek için öncelikle bir operatör fonksiyonu oluşturmamız gerekmektedir. Genellikle bu fonksiyonlar tanımlandıkları sınıfın bir üyesidir. Bu fonksiyonları şu şekilde tanımlayabiliriz:
tür sınıf adı :: operatör operatör ( argüman listesi)
{
...
}
Her operatöre aşırı yükleme yapamayız. Bu operatörler şunlardır: ".", "::", "?". Ayrıca ön işlemci operatörlerine de aşırı yükleme yapılamamaktadır.
Eğer bir aritmetik operatöre aşırı yükleme yapmak istiyorsak yine bir operatör fonksiyonu tanımlamamız gerekir. Örneğin + operatörüne başka bir görev yüklemek istiyoruz. Bunun için operatör+ fonksiyonunu tanımlamamız gerekir. Buna benzer şekilde -, *, / işaretlerine de normalde olan görevleri dışında başka görevlerde yüklenebilir.
Operatör
|
Anlamı
|
+
|
Toplama
|
-
|
Çıkarma
|
*
|
Çarpma
|
/
|
Bölme
|
%
|
Bölme işleminde kalan
|
++
|
Bir artırma
|
--
|
Bir azaltma
|
Benzer bir şekilde karşılaştırma operatörlerine ve mantıksal operatörlere aşırı yükleme yapılabilir.
Tablo 2. Aşırı yükleme yapılabilecek karşılaştırma operatörleri
Operatör
|
Anlamı
|
==
|
Eşit mi?
|
!=
|
Farklı mı?
|
>
|
Büyük mü?
|
<
|
Küçük mü?
|
>=
|
Büyük veya eşit mi?
|
<=
|
Küçük veya eşit mi?
|
Tablo 3. Aşırı yükleme yapılabilecek mantıksal operatörler
Operatör
|
Anlamı
|
&&
|
Ve
|
||
|
Veya
|
!
|
Değil
|
Normalde aşırı yükleme yapılacağı zaman operatör fonksiyonları tanımlandıkları sınıfa ilişkin olarak bir nesne döndürmesi gerekiyordu. Ama karşılaştırma ve mantıksal operatörlerde aşırı yükleme yapılırken buna gerek duyulmaz. Bunun yerine "doğru" ya da "yanlış" ya da başka bir deyişle 1 veya 0 değerlerini ifade edebilecek bir tamsayı döndürülür.
Artırma ve eksiltme işlemlerinde kullanılan ++ ve -- operatörleri, aynı aritmetik operatörlerde olduğu gibi aşırı yüklenebilirler. Ancak aritmetik operatörler iki terim arasında kullanılmasına karşın; artırma ve eksiltme operatörleri tek terim için kullanılırlar. Bu operatörlere ilişkin üye fonksiyonu herhangi bir parametre almaz.
Hiç yorum yok:
Yorum Gönder