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 toplanmaktadir yaz(c3); _getch(); return 0; } |
Hiç yorum yok:
Yorum Gönder