C/C++ Operatorlerin Aşırı Yüklenmesi (Operator Overloading)
C++’ da +,-,*,!,++ gibi operatörler fonksiyonlar yazılarak bu operatörlere yeni işlevler yüklenebilir. Fakat sadece C++’ da zaten var olan operatörlere aşırı yükleme yapılabilir. Örneğin üs(^) operatörüne aşırı yükleme yapılamaz. Fonksiyonlar tanımlanırken operatörün orjinalinde var olan operand sayısı değiştirilemez. Yani toplama için tek operand veremezsiniz yine en az 2 operand vermeniz gerekmektedir. Ayrıca öncelik sıralamalarında bir değişiklik olmaz yine aynı şekilde öncelikleri vardır.
Aşağıdaki örnekte verilen kodlama ile + operatoru iki karmaşık sayıyı toplamak için aşırı yüklenmiştir. Programın çıktı ekranı üsttedir.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| #include<iostream>#include<conio.h>using namespace std;struct karmasiksayi{float reel,sanal;};karmasiksayi operator+(const karmasiksayi &v1,const karmasiksayi &v2){karmasiksayi sonuc;sonuc.reel=v1.reel+v2.reel;sonuc.sanal=v1.sanal+v2.sanal;return sonuc;}void yaz (karmasiksayi c){cout<< "Reel="<<c.reel<<" Sanal="<<c.sanal<<endl;}int main(){karmasiksayi c1,c2,c3;c1.reel=3;c1.sanal=-1;c2.reel=2.5;c2.sanal=0.7;c3=c1+c2;//burada 2 karmasik sayi toplanmaktadiryaz(c3);_getch();return 0;} |