template<typename T>
- C++ kursu
- Orta seviye
- Ders 47/116
- 5 dk
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
#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
#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?
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
template <____> T identity(T x) { return x; }
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 |