Template sınıf
- C++ kursu
- Orta seviye
- Ders 49/116
- 5 dk
template<typename T> ile generic sınıf yazmayı öğrenirsin.
Şablon sınıf
Bir şablon sınıf, tür parametresi alan bir sınıftır. Bildirim: template <typename T> class Box { T value; };. Burada T value üyesi, sınıfın tür parametresine bağlıdır.
Örnek oluşturma: Box<int> b;. Tür, açılı parantez içinde yazılır. Derleyici, her tür için ayrı bir sınıf üretir. Box<int> ve Box<double> iki farklı sınıftır. Üye fonksiyonlar da T kullanır; örneğin T getValue().
Şablon sınıf üyeleri
Şablon sınıfın üye fonksiyonları T kullanır. T getValue() { return value; } gibi. Üye fonksiyon, örnek üzerinden çağrılır: Box<int> b(42); b.getValue().
Yapıcı metot da T alabilir: Box(T v) : value(v) {}. Burada : value(v) başlatıcı liste üyeyi kurar. Box<int> b(42) ile value=42 olarak örnek oluşur. b.getValue() 42 döndürür. Şablon sınıflar, tür güvenli kapsülleme sağlar.
Uygulama Box şablon sınıfını yaz
template <typename T> class Box yaz. Özel üye T value, yapıcı Box(T v) : value(v) {}, T getValue() döndürsün. main içinde Box<int> b(42); ve std::cout << b.getValue() << std::endl; yaz.
Başlangıç kodu
#include <iostream>
// Box şablon sınıfını yaz: T value, T getValue()
int main() {
// Box<int> örneği oluştur ve getValue() yazdır
return 0;
}Örnek çözüm
#include <iostream>
template <typename T>
class Box {
T value;
public:
Box(T v) : value(v) {}
T getValue() { return value; }
};
int main() {
Box<int> b(42);
std::cout << b.getValue() << 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 Sınıf bildirimini tamamla
template <typename T> class ____ { T value; };
template <typename T> class Box { T value; };
Açıklama: Sınıf adı PascalCase yazılır: Box.
2 Üyeyi rolüne eşle
| Kavram | Anlamı |
|---|---|
Box<int> |
int türünde örnek |
T value |
Tür parametreli üye |
getValue() |
Üye fonksiyon |
b.getValue() |
Örnek üzerinden çağrı |
3 Box<double> nasıl tanımlanır?
template <typename T> class Box;- Box double b;
- Box<b> double;
- Box<double> b; Doğru cevap
- double<Box> b;
Açıklama: Box<double> b; tür açılı parantez içinde yazılır.