Merhaba
sevgili okurlar. Bu ay pek bilinmeyen ancak yerinde kullanıldığı zaman
kodunuzun karmaşasını azaltabilen ve okunabilirliği artıran bir yapıdan
bahsedeceğim. C++ dilini kullanarak kendi sınıflarımız için özel operatörler
tanımlayacağız ve bu operatörleri kullanacağız. Operatörler aslında normal
fonksiyonlardan farksızlar, tek farkları fonksiyonlarda parametreler parantez
içinde bulunurken operatörlerde bu parametreler operatörün sağında ya da
solunda bulunmaktadır.
Operatörler birçok yerde işimizi çok
kolaylaştırabilir. Örnek olarak; string kütüphanesinde iki string'i uç uca
eklemek için '+' operatörünü kullanıyoruz. Bu operatör olmasaydı string
birleştirmek için kullanacağımız fonksiyonlar büyük bir karmaşaya yol açacaktı.
String için '=' operatörü de aynı şekilde kodun anlaşılırlığını büyük ölçüde
artırmakta. Operatörlerin yanlış kullanılması durumunda ise anlaşılabilirlik
kalmayacaktır. Örnek olarak; string için '!' operatörünü string'in uzunluğu
veren operatör olarak tanımlarsanız kodunuzu inceleyen kişi için bu gibi
operatörleri anlamaya çalışmak işkenceye dönüşecektir. Lafı fazla uzatmadan ben
örnek uygulamaya geçiyorum. Bu yazı boyunca kendi oluşturduğum bir 'tamsayi'
sınıfı için belirli operatörleri aşırı yükleyeceğim ve kullanacağım.

Bu kodun çıktısı
aşağıdaki şekilde olacaktır.
Gördüğünüz gibi
oluşturduğum tamsayi sınıfı için '+' ve '=' operatörlerini aşırı yükledim. Bu
sayede fonksiyonların karmaşasından kurtularak hem çok kolay anlaşılır hem de
kullanışlı bir yapı elde etmiş oldum. Şimdi de, değişkenin soluna konulabilen
parametrelere örnekler vereceğim.

Bu kodun çıktısı
aşağıdaki gibi olacaktır.

Gördüğünüz gibi tamsayının negatifini,
başına '-' operatörü koyarak ve tamsayının faktöriyelini ise başına '!'
operatörü koyarak elde edebildim. Ayrıca bazı operatörler birden fazla
parametre alabilirler. Buna örnek aşağıdaki gibidir.
Bu kodun çıktısı şöyle
olacaktır.

Gördüğünüz gibi '=='
operatörünü iki tamsayının eşitliğini karşılaştıracak şekilde aşırı yükledim. Neredeyse
bütün operatörler aşırı yüklenebilir. Aşırı yüklenebilir operatörlerin
listesini yazının sonundaki linkten bulabilirsiniz. Özellikle string sınıfı
gibi bir sınıf yazacak olursanız ve aşırı yüklenmiş operatörler kullanırsanız
programcı dostu ve anlaşılabilir kütüphaneler yazabilirsiniz. Kısa ve öz olması
için yazımı burada bitiriyorum. Umarım sizin için faydalı olmuştur. İyi
okumalar ve yazmalar.
Kaynaklar: