CodeBlanks Logo Icon CodeBlanks

template<typename T>

template<typename T> ile generic fonksiyon yazmayı öğrenirsin.

Template nedir?

Bir template (şablon), türden bağımsız kod yazmanı sağlar. template <typename T> bildirimi, T adında bir tür parametresi tanımlar. Derleyici, kullanılan her tür için ayrı bir sürüm üretir.

Örnek: template <typename T> T identity(T x) { return x; } şablonu int, double ve std::string türleri için çalışır. identity(42) çağrısında derleyici T=int olarak bir sürüm üretir. Buna instantiation denir.

Tür çıkarsama

Şablon fonksiyonu çağırırken türü açıkça yazmak zorunda değilsin. identity(42) çağrısında derleyici T=int olarak çıkarır (type deduction). Bu, kodu sade tutar.

Türü açıkça da belirtebilirsin: identity<double>(3.14). Bu, çıkarımın belirsiz olduğu durumlarda gerekir. Örneğin identity(3.14) çağrısı T=double olarak çıkarılır. Şablonlar, aynı işi yapan birden çok fonksiyon yazmaktan kurtarır.

Uygulama identity şablonunu yaz

template <typename T> T identity(T x) şablon fonksiyonunu yaz; x'i döndürsün. main içinde std::cout << identity(42) << std::endl; çağır.

Başlangıç kodu

main.cpp
#include <iostream>

// identity şablon fonksiyonunu yaz: T identity(T x)

int main() {
    // identity çağrısı yap ve sonucu yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>

template <typename T>
T identity(T x) {
    return x;
}

int main() {
    std::cout << identity(42) << std::endl;
    return 0;
}

Beklenen çıktı

42

Soru ve cevaplar

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

1 Hangi anahtar sözcük tür parametresi bildirir?

main.cpp
template <___> T identity(T x);
  • typename Doğru cevap
  • typedef
  • auto
  • static

Açıklama: typename, tür parametresi bildirir. class da aynı anlamda kullanılabilir.

2 Şablon bildirimini tamamla

Soru
template <____> T identity(T x) { return x; }
Cevap
template <typename T> T identity(T x) { return x; }

Açıklama: template <typename T> ile T tür parametresi bildirilir.

3 Parçayı rolüne eşle

Kavram Anlamı
template <typename T> Tür parametresi bildirimi
T Tür parametresi adı
identity(42) int ile çağrı
return x Girdiyi döndür

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