Default parametreler
- C++ kursu
- Başlangıç
- Ders 69/116
- 5 dk
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
#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
#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?
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
void greet(std::string name ____ "misafir") { std::cout << name; }
void greet(std::string name = "misafir") { std::cout << name; }
Açıklama: = ile varsayılan değer verilir.