Farklı değişkenler alan temelde aynı işi yapan aynı isimli fonksiyonlar. Örneğin:
// Function Overloading olmadan:
int sumi(int a, int b) { return a + b; }
int sumf(float a, float b) { return a + b; }
// Function Overloading olunca:
int sum(int a, int b) { return a + b; }
int sum(float a, float b) { return a + b; }
Eskiden bu olmadığı için mantıksal olarak aynı işi yapan farklı isimlerde fonksiyonları görmek mümkündü. Artık böyle bir şeye gerek kalmadı.
Bir takım bilinmesi gereken hususlar var:
- Bunu kullanabilmek için fonksiyonun aldığı parametreler farklı olmalı. Ya sayı olarak ya da tiür olarak. Dönüş değerinin farklı olması tek başına yeterli değildir.
- Parametrelerin birbirine dönüşmesi meselesine dikkat edilmesi gerekli bazen beklemediğimiz fonksiyonu çağırabilir:
#include <iostream>
using namespace std;
int sum(int a, int b) {
cout << "int" << a + b << endl;
return a + b;
}
float sum(float a, float b) {
cout << "float" << a + b << endl;
return a + b;
}
int main() {
sum(3, 5); // int8
sum(3.3, 5); // int8
sum(3.3f, 5.5); // float8.8
sum(3.3, 5.5); // hata // compiler hangi fonksiyonu seçmesi gerektiğini bilemiyor
}
Leave a Reply