CodeBlanks Logo Icon CodeBlanks

Template instantiation

Template instantiation mekanizmasını öğrenirsin.

Template instantiation

Template instantiation, derleyicinin bir şablondan somut kod üretmesidir. Şablon kendisi kod değil; bir tariftir. Her kullanıldığı tür için somut kod üretilir.

İki türü vardır: implicit (örtülü) — şablon kullanıldığında derleyici otomatik üretir; explicit (açık) — template class Foo<int>; ile programcı üretimi zorlar. Açık üretim, derleme süresini azaltmak ve derleme birimi sınırı çözmek için kullanılır.

Örtülü örnekleme

template <typename T> T identity(T x) { return x; } şablonu tanımlandığında henüz kod üretilmez. identity(7) çağrısı ilk kez yapıldığında derleyici identity<int> sürümünü üretir.

İkinci bir türle çağrı yapılırsa (identity(3.14)), bu kez identity<double> üretilir. Yani her farklı tür için ayrı bir somut fonksiyon üretilir. Bu yüzden şablonların tamamı başlık dosyasında olmalıdır; aksi halde derleyici diğer derleme birimlerindeki kullanımı göremez.

Uygulama identity şablonu yaz

template <typename T> T identity(T x) yaz; gövdesi return x;. main içinde std::cout << identity(7); yaz.

Başlangıç kodu

main.cpp
#include <iostream>

// identity şablon fonksiyonunu burada tanımla

int main() {
    // identity'yi çağır ve 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(7);
    return 0;
}

Beklenen çıktı

7

Soru ve cevaplar

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

1 Kavramı rolüne eşle

Kavram Anlamı
implicit instantiation Kullanım yerinde otomatik
explicit instantiation template class Foo<int>;
type deduction auto x = ...
specialization Özel davranış

2 Açık örneklemeyi tamamla

Soru
template ____ Vector<int>;
Cevap
template class Vector<int>;

Açıklama: template class Vector<int>; açık örneklemeyi bildirir.

3 Örtülü template instantiation ne zaman gerçekleşir?

main.cpp
template <typename T> T identity(T x) { return x; }
auto a = identity(7);
  • Derleyici template'i gördüğü anda
  • Bağlama sırasında
  • template kullanıldığında (çağrıldığında) Doğru cevap
  • Çalışma zamanında

Açıklama: Örtülü örneklemde, şablon ilk kullanıldığında kod üretilir.

Uzman bölümündeki tüm dersler