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#include <iostream>
2
3void func(int x = 10, int y = 20, int z = 30);
4
5void func(int x, int y, int z)
6{
7 std::cout << "x -> " << x << std::endl;
8 std::cout << "y -> " << y << std::endl;
9 std::cout << "z -> " << z << std::endl;
10 std::cout << "****************************" << std::endl;
11
12}
13
14int main() {
15
16 func();
17 func(1);
18 func(1, 2);
19 func(1, 2, 3);
20
21 return 0;
22}
23
24/*
25 x -> 10
26 y -> 20
27 z -> 30
28 ****************************
29 x -> 1
30 y -> 20
31 z -> 30
32 ****************************
33 x -> 1
34 y -> 2
35 z -> 30
36 ****************************
37 x -> 1
38 y -> 2
39 z -> 3
40 ****************************
41 */
-
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.