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.