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

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