Templates (Şablonlar): Generic Programlama ve Fonksiyon Şablonları

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16

Templates: Tip Bağımsız (Generic) Programlama​


Şablonlar, derleyiciye bir fonksiyonun veya sınıfın taslağını verir. Derleyici, siz o fonksiyonu hangi tiple çağırırsanız, arka planda o tipe uygun gerçek bir kopyasını otomatik olarak oluşturur.



1. Fonksiyon Şablonları (Function Templates)​


Bir fonksiyonu şablon haline getirmek için başına template <typename T> (veya class T) ifadesini ekleriz. Buradaki T, henüz belirlenmemiş bir veri tipini temsil eden bir yer tutucudur.

C++:
template <typename T>
T enBuyuk(T a, T b) {
return (a > b) ? a : b;
}

int main() {
cout << enBuyuk<int>(5, 10) << endl;       // int versiyonu
cout << enBuyuk<double>(3.5, 2.1) << endl; // double versiyonu
cout << enBuyuk('a', 'z') << endl;         // char versiyonu (Derleyici tipi otomatik anlar)
}



2. Birden Fazla Tip Parametresi Kullanımı​


Şablonlar sadece tek bir tiple sınırlı değildir. Farklı veri tiplerini aynı anda işlemek için birden fazla parametre tanımlayabilirsiniz.

C++:
template <typename T, typename U>
void yazdirVeKarsilastir(T veri1, U veri2) {
cout << "Birinci: " << veri1 << " Ikinci: " << veri2 << endl;
}



3. Sınıf Şablonları (Class Templates)​


Sadece fonksiyonlar değil, sınıflar da şablon olabilir. C++ Standart Kütüphanesi'ndeki vector, list veya stack gibi yapılar tamamen bu mantıkla çalışır.

C++:
template <typename T>
class Kutu {
private:
T icerik;
public:
Kutu(T veri) : icerik(veri) {}
T getir() { return icerik; }
};

int main() {
Kutu<int> tamSayiKutusu(42);
Kutu<string> metinKutusu("Merhaba");
}



4. Templates vs. Overloading (Neden Şablon?)​


ÖzellikFonksiyon OverloadingTemplates (Şablonlar)
Kod TekrarıHer tip için kod tekrar yazılır.Tek bir taslak yeterlidir.
BakımZordur, her kopyayı güncellemek gerekir.Kolaydır, tek yeri düzeltmek yeterlidir.
EsneklikSınırlıdır (Sadece yazdığınız tipler).Sınırsızdır (Tüm uyumlu tipler).



Sonuç​


Şablonlar, C++'ı sadece "nesne yönelimli" değil, aynı zamanda "jenerik" bir dil yapan temel unsurdur. Kodun esnekliğini maksimuma çıkarırken, derleme zamanında tip kontrolü (Type Safety) sağlayarak performanstan ödün vermez. Ancak unutmayın: Şablonlar fazla kullanıldığında derleme süresini uzatabilir ve "Code Bloat" (kodun şişmesi) denilen duruma yol açabilir.
 
Geri
Üst