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?)
| Özellik | Fonksiyon Overloading | Templates (Şablonlar) |
|---|---|---|
| Kod Tekrarı | Her tip için kod tekrar yazılır. | Tek bir taslak yeterlidir. |
| Bakım | Zordur, her kopyayı güncellemek gerekir. | Kolaydır, tek yeri düzeltmek yeterlidir. |
| Esneklik | Sı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.