Fonksiyon overloading
- C++ kursu
- Başlangıç
- Ders 68/116
- 5 dk
Aynı isimli fonksiyonları farklı parametrelerle tanımlamayı öğrenirsin.
Fonksiyon overloading
C++ aynı adla birden çok fonksiyon tanımlamaya izin verir; buna overloading denir. Şart, parametre listelerinin farklı olmasıdır. int add(int a, int b) ve double add(double a, double b) aynı adı taşır ama farklı imzalara sahiptir.
Derleyici çağrıdaki argüman türlerine bakarak hangi fonksiyonu seçeceğini kendisi karar verir; bu mekanizmaya aşırı yükleme çözümlemesi denir. add(2, 3) int sürümünü, add(2.5, 3.5) double sürümünü çağırır. Sana yalnızca add yazmak yeter.
Dönüş türü imzaya dahil değil
İki fonksiyon yalnızca dönüş türüyle ayrılıyorsa bu overloading sayılmaz; derleme hatası alırsın. int f() ve double f() aynı imzaya sahiptir çünkü parametre listeleri aynıdır.
Bunun nedeni, çağrının yalnızca ad ve argümanlardan oluşmasıdır; çağıran, dönüş türünü önceden bilmek zorunda değildir. İki sürümü ayırmak istiyorsan parametre türlerini ya da sayısını değiştirmelisin. Örneğin int f(int x) ve double f(double x) geçerli bir overloading çiftidir.
Uygulama İki add overload'u yaz
İki add fonksiyonu tanımla: biri int add(int a, int b) tamsayı döndürsün, öteki double add(double a, double b) ondalık döndürsün. main'de add(2, 3) ve add(2.5, 3.5) sonuçlarını aralarına boşluk koyarak yazdır.
Başlangıç kodu
#include <iostream>
// int add overload tanımla
// double add overload tanımla
int main() {
// iki add çağrısını yazdır
return 0;
}Örnek çözüm
#include <iostream>
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
int main() {
std::cout << add(2, 3) << " " << add(2.5, 3.5) << std::endl;
return 0;
}Beklenen çıktı
5 6
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Overload tanımlarını tamamla
double add(double a, ____) { return a + b; }
double add(double a, double b) { return a + b; }
Açıklama: double add(double a, double b) int sürümünden ayrı bir imzadır.
2 Aşırı yükleme çözümlemesini eşle
| Kavram | Anlamı |
|---|---|
add(2, 3) |
int sürüm |
add(2.5, 3.5) |
double sürüm |
farklı parametreler |
Overloading şartı |
derleyici seçer |
Çözümleme |
3 Hangi iki fonksiyon geçerli bir overloading çiftidir?
// ???- int f(int x) ve int f(double x) Doğru cevap
- int f(int x) ve int f(int x)
- void f() ve void f()
- int f() ve double f()
Açıklama: parametre türleri farklı, aynı ad geçerli overloadingdir.