CodeBlanks Logo Icon CodeBlanks

OOP modeli

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

main.cpp
#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

main.cpp
#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

Soru
template <____> void printItem(const T& item) { std::cout << item; }
Cevap
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?

main.cpp
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

Orta seviye bölümündeki tüm dersler