C++ Function Default Argument

  • C dilinde olmayan C++, Java, C#, Python gibi dillerde bulunan bir mekanizma.

  • C dilinde bir fonksiyonun kaç parametresi varsa o kadar argüman gönderilmesi gerekir. Variadic Function hariç tutuyoruz.

  • Böyle bir mekanizmanın olması client tarafından birçok fonksiyonun aynı değerlerle çağırılmasıdır. Parametre sayısı fazla olan fonksiyonlarda bu mekanizma daha fazla işe yarıyor. Programcının işini kolaylaştırıyor.

  • Default parametre mekanizması run time maliyeti getiren bir mekanizma değildir

 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
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>

void func(int x = 10, int y = 20, int z = 30);

void func(int x, int y, int z)
{
    std::cout << "x -> " << x << std::endl;
    std::cout << "y -> " << y << std::endl;
    std::cout << "z -> " << z << std::endl;
    std::cout << "****************************" << std::endl;

}

int main() {

    func();
    func(1);
    func(1, 2);
    func(1, 2, 3);

    return 0;
}

/*
    x -> 10
    y -> 20
    z -> 30
    ****************************
    x -> 1
    y -> 20
    z -> 30
    ****************************
    x -> 1
    y -> 2
    z -> 30
    ****************************
    x -> 1
    y -> 2
    z -> 3
    ****************************
 */
  • Varsayılan argüman konusunda yapılmaması gereken birkaç davranış var. Bunlar direk sentaks hatası oluyor zaten.

  • Fonksiyonun bir parametresi varsayılan argüman alıyorsa bundan sonra gelecek tüm parametreler varsayılan argüman almak zorunda. Yani sağ taraftaki tüm argümanlar.

  • Fonksiyon bildiriminde varsayılan değerler verildikten sonra fonksiyon tanımı yapılırken tekrardan değer verilmemelidir. Eğer fonksiyon bildirimi yok ise tanımlama da verilebilir.