Template fonksiyon
- C++ kursu
- Orta seviye
- Ders 48/116
- 5 dk
Template fonksiyon tanımlamayı ve çağırmayı öğrenirsin.
Şablon fonksiyon çağrısı
Bir şablon fonksiyonu, normal fonksiyon gibi çağrılır. max(3, 5) çağrısında derleyici T=int olarak çıkarır. Türü açıkça da yazabilirsin: max<double>(3.0, 5.0).
Örnek: template <typename T> T max(T a, T b) { return a > b ? a : b; }. Burada a > b ? a : b üçlü koşul, büyük olanı döndürür. max(3, 5) çağrısı 5 sonucunu verir. Derleyici, her çağrı için ayrı bir sürüm üretir; bu yüzden çalışma zamanında ek yük yoktur.
Tür çıkarsama sınırları
Tür çıkarsama her zaman çalışmaz. max(3, 5.0) çağrısında derleyici T'nin int mi yoksa double mı olduğuna karar veremez; iki bağımsız değişken farklı türlerdir.
Çözüm: türü açıkça belirtmek. max<double>(3, 5.0) çağrısı T=double olarak çalışır; 3 otomatik olarak double'a dönüştürülür. Aynı şekilde max<int>(3, 5.0) 5.0'ı int'e dönüştürür. Belirsizlik olduğunda açık tür zorunludur.
Uygulama add şablonunu yaz
template <typename T> T add(T a, T b) şablon fonksiyonunu yaz; a + b'yi döndürsün. main içinde std::cout << add(3, 4) << std::endl; çağır.
Başlangıç kodu
#include <iostream>
// add şablon fonksiyonunu yaz: T add(T a, T b)
int main() {
// add çağrısı yap ve sonucu yazdır
return 0;
}Örnek çözüm
#include <iostream>
template <typename T>
T add(T a, T b) {
return a + b;
}
int main() {
std::cout << add(3, 4) << std::endl;
return 0;
}Beklenen çıktı
7
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Çağrıyı anlama eşle
| Kavram | Anlamı |
|---|---|
max(3, 5) |
T=int çıkar |
max<double>(3.0, 5.0) |
Açık tür |
max("a", "b") |
T=const char* |
max<int>(3, 5) |
Açık int |
2 max(3, 5) çağrısında T ne olur?
template <typename T> T max(T a, T b);- double
- int Doğru cevap
- const char*
- void
Açıklama: 3 ve 5 int literal olduğundan T=int olarak çıkarılır.
3 Açık tür çağrısını tamamla
int result = max____(3, 5);
int result = max<int>(3, 5);
Açıklama: max<int>(3, 5) türü açıkça int olarak belirtir.