Template instantiation
- C++ kursu
- Uzman
- Ders 39/47
- 5 dk
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
#include <iostream>
// identity şablon fonksiyonunu burada tanımla
int main() {
// identity'yi çağır ve yazdır
return 0;
}Örnek çözüm
#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
template ____ Vector<int>;
template class Vector<int>;
Açıklama: template class Vector<int>; açık örneklemeyi bildirir.
3 Örtülü template instantiation ne zaman gerçekleşir?
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.