CPP 032 – Function Overloading

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
}


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *