Operatör Aşırı Yüklemesi Nedir?

Operatör aşırı yüklenmesi, bir programcının varsayılan bir operatörü geçersiz kılmasına izin veren bir bilgisayar programlama dili özelliğidir. Operatör fonksiyonu aşırı yüklendiğinde, operatörün varsayılan olarak kullanabileceğinden farklı veri tipleri olan özel argümanlarla bildirilebilir. Yeni parametreler ilkel veya kullanıcı tanımlı türler olabilir. Geçersiz kılma fonksiyonunun bünyesinde, bir programcı parametre değerlerini istenen şekilde değiştirebilir. Operatör aşırı yükünü kullanarak, bir programcı, kullanıcı tanımlı veri tiplerini değiştirmek veya varsayılan veri tiplerinin nasıl işlendiğini değiştirmek için sezgisel kısayollar oluşturabilir.

Kullanıcı tanımlı veri tipleri oluşturulduğunda, ikisini bir araya getirmek veya unary artrım operatörünü veri tipiyle kullanmak suretiyle dahili verileri artırmak gibi basit operasyonel görevleri gerçekleştirmenin bir yolu yoktur. Ekleme sembolü de dahil olmak üzere işleçler geçersiz kılınabilir, böylece iki özel veri türü arasında ikili işleç olarak kullanılırlarsa kullanıcı tarafından tanımlanan bir sonuç döndürürler. Aynı şekilde, artırma operatörü gibi bir tekli operatör, kullanıcı tanımlı tür içindeki bir iç değeri arttırmak için geçersiz kılınabilir.

Bir operatör aşırı yüklendiğinde, derleyici aşırı yüklenmiş bir operatörle karşılaştığında ne yapılması gerektiğine dair bir karar vermelidir. Derleyici, hangi veri türlerinin işlenen olarak veya işleç ile birlikte kullanıldığına bağlı olarak yapılacak doğru işleme karar verir. Operatör işlevine parametre değerleri olan işlenenler, kullanıcı tanımlı veri türleri ise, derleyici, kullanılan işlenenlerle eşleşen parametrelere sahip aşırı yüklenmiş işlevi seçecektir.

Bilgisayar dilleri bu tür geçici polimorfizme nasıl izin verdikleri konusunda farklılık gösterir. Farklı diller, yeni özel operatörlerin oluşturulmasına, operatörlerinin hepsinin veya bir kısmının aşırı yüklenmesine izin verebilir veya operatörün aşırı yüklenmesine izin vermeyebilir. C ++, C #, PHP ve Perl, bazı operatörlerinin aşırı yüklenmesine izin veriyor. C, Java ve Javascript'te operatör aşırı yüklenmesine izin verilmiyor.

Hem operatör aşırı yüklenmesi hem de genel olarak fonksiyon aşırı yüklenmesi, bazı tartışmalara konu olmuştur. Bazılarına, programcıya bir operatörün davranış şeklini değiştirme özgürlüğünü vermenin, özelleştirilmiş kodu kullanan diğer programcılar tarafından istenmeyen hatalar yaratma potansiyeli getirebileceğini iddia ediyor. Muhalif bakış açısı, operatörün aşırı yüklenmesine izin vermenin programcılara anlaşılması kolay, üretilmesi daha az maliyetli ve hataları azaltacak sezgisel ve kısa kod oluşturma yeteneği sağlamasını önerir.