CodeBlanks Logo Icon CodeBlanks

Default parametreler

Varsayılan değerli parametreler tanımlamayı öğrenirsin.

Default parametreler

Bir parametreye varsayılan değer verebilirsin; çağrıda o parametreyi atlarsan varsayılan kullanılır. void greet(std::string name = "misafir") tanımında name'in varsayılanı "misafir"'dir. greet() çağrısı greet("misafir") ile aynıdır.

Varsayılan değer tanımda bir kez verilir; bildirim ile tanım ayrıysa varsayılan yalnızca bildirimde yazılır. Önemli kısıt: varsayılan parametreler, varsayılanı olmayanlardan sonra gelmelidir. void f(int a, int b = 0) geçerli, void f(int b = 0, int a) geçersizdir.

Hangi parametreye varsayılan verilir?

Varsayılan parametrelerin sırası önemlidir. void f(int a, int b = 0, int c = 0) geçerlidir: varsayılanlar sonda. void f(int a = 0, int b, int c = 0) geçersizdir çünkü b'nin varsayılanı yok ama kendisinden sonra varsayılanlı var.

Mantığı şu: çağrıda argümanlar soldan sağa bağlanır. Bir parametreyi atladığında, sağındakileri de atlamak zorundasın. Bu yüzden varsayılanlar en sonda toplanır. İsteğe bağlı parametreleri en sona koymak, hem derleyiciye hem okuyucuya işi kolaylaştırır.

Uygulama Default parametreli greet yaz

void greet(std::string name = "misafir") fonksiyonu tanımla; içi std::cout << "merhaba " << name << std::endl; olsun. main'de önce greet(), sonra greet("Ayşe") çağır.

Başlangıç kodu

main.cpp
#include <iostream>
#include <string>

// greet fonksiyonunu varsayılan parametreyle tanımla

int main() {
    // greet çağrıları (bir argümansız, bir argümanlı)
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>
#include <string>

void greet(std::string name = "misafir") {
    std::cout << "merhaba " << name << std::endl;
}

int main() {
    greet();
    greet("Ayşe");
    return 0;
}

Beklenen çıktı

merhaba misafir
merhaba Ayşe

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Default parametre davranışını eşle

Kavram Anlamı
greet() Varsayılan ile çağrı
greet("Ayşe") Argümanlı çağrı
name = "misafir" Varsayılan değer
int a, int b = 0 Geçerli sıra

2 void f(int a, int b = 0) için f(5) çağrısında b kaç olur?

main.cpp
void f(int a, int b = 0);
f(5);
  • 5
  • 0 Doğru cevap
  • Tanımsız
  • Derleme hatası

Açıklama: b atlandığında varsayılan 0 kullanılır.

3 Varsayılan değeri tamamla

Soru
void greet(std::string name ____ "misafir") { std::cout << name; }
Cevap
void greet(std::string name = "misafir") { std::cout << name; }

Açıklama: = ile varsayılan değer verilir.

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