CodeBlanks Logo Icon CodeBlanks

Fonksiyon overloading

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

main.cpp
#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

main.cpp
#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

Soru
double add(double a, ____) { return a + b; }
Cevap
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?

main.cpp
// ???
  • 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.

Başlangıç bölümündeki tüm dersler