OOP modeli
- C++ kursu
- Orta seviye
- Ders 113/116
- 6 dk
Sınıf hiyerarşisi ve template'leri kurarsın.
Şablon fonksiyon: printItem
Bu derste printItem adında bir şablon (template) fonksiyonu ekleyeceğiz. Bu fonksiyon herhangi bir türü std::cout ile yazdırabilir.
Örnek: template <typename T> void printItem(const T& item) { std::cout << item; }. Bu fonksiyon hem bir std::string hem bir bool hem de Task nesnesi için çağrılabilir. Şablonlar, aynı kodun farklı türler için çalışmasını sağlar. const T& parametre kopyayı önler ve büyük nesnelerde verimlidir. Önceki dersin Task sınıfını alıp üzerine bu şablonu ekleyeceğiz.
Şablonu çağırma
Bir şablon fonksiyonu çağırırken türü açıkça belirtmeden, derleyici parametreden çıkarsar. printItem(t.title) çağrısı T'yi std::string olarak belirler.
Örnek: printItem(t.title); başlığı yazar, printItem(t.done); ise done bayrağını yazar. Derleyici her çağrı için doğru türü üretir. Bu yöntem, std::cout << yazmaktan daha kısa değildir ama projede tekrar tekrar kullanıldığında tutarlılık sağlar. Şablonlar, STL'de de yaygındır; std::vector de bir şablondur.
Uygulama printItem şablonunu ekle ve çağır
Başlangıç kodundaki Task sınıfının ardından printItem şablon fonksiyonunu ekle: template <typename T> void printItem(const T& item) { std::cout << item; }. main içinde printItem(t.title) ile başlığı yazdır, ardından boşluk ve t.done'u yazdır.
Başlangıç kodu
#include <iostream>
#include <string>
class Task {
public:
std::string title;
bool done;
Task(std::string t) : title(t), done(false) {}
};
// printItem şablon fonksiyonunu ekle
int main() {
Task t("Ödev");
// printItem ile başlığı yazdır, sonra boşluk ve done yazdır
return 0;
}Örnek çözüm
#include <iostream>
#include <string>
class Task {
public:
std::string title;
bool done;
Task(std::string t) : title(t), done(false) {}
};
template <typename T>
void printItem(const T& item) {
std::cout << item;
}
int main() {
Task t("Ödev");
printItem(t.title);
std::cout << " " << t.done;
return 0;
}Beklenen çıktı
Ödev 0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Şablon tanımını tamamla
template <____> void printItem(const T& item) { std::cout << item; }
template <typename T> void printItem(const T& item) { std::cout << item; }
Açıklama: typename T şablon tür parametresidir.
2 template <typename T> ne sağlar?
template <typename T>
void printItem(const T& item);- Fonksiyonun silinmesini
- Fonksiyonun daha hızlı olmasını
- Fonksiyonun gizlenmesini
- Fonksiyonun farklı türlerle çalışmasını Doğru cevap
Açıklama: Şablon, fonksiyonun farklı türlerle çalışmasını sağlar.
3 Parçayı rolüne eşle
| Kavram | Anlamı |
|---|---|
template <typename T> |
Şablon tanımı |
const T& |
Kopyasız parametre |
printItem(t.title) |
Çağrı |
std::cout << item |
Yazdırma |