CodeBlanks Logo Icon CodeBlanks

Template fonksiyon

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

main.cpp
#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

main.cpp
#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?

main.cpp
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

Soru
int result = max____(3, 5);
Cevap
int result = max<int>(3, 5);

Açıklama: max<int>(3, 5) türü açıkça int olarak belirtir.

Orta seviye bölümündeki tüm dersler