C++ Şablonlar (Templates)

  • 1
  • (1)
  • (5)
  • 18 Oca 2025

C++ Şablonları (Templates), kod tekrarını azaltmak ve türe bağımsız programlama yapmak için kullanılan bir mekanizmadır. Şablonlar sayesinde aynı kod parçası birden fazla veri tipi ile kullanılabilir. C++'ta iki temel şablon türü vardır:

  • Fonksiyon Şablonları (Function Templates)
  • Sınıf Şablonları (Class Templates)

Fonksiyon Şablonları (Function Templates)

Fonksiyon şablonları, farklı veri türleriyle aynı işlevi yerine getiren fonksiyonlar oluşturmak için kullanılır.


#include <iostream>
#include <locale.h>
using namespace std;

// İki değeri karşılaştıran fonksiyon şablonu
template <typename T>
T maksimum(T a, T b) {
    return (a > b) ? a : b;
}

// Birden fazla değeri karşılaştıran fonksiyon şablonu
template <typename T, typename... Args>
T maksimum(T ilk, Args... args) {
    return maksimum(ilk, maksimum(args...));
}

int main() {
    setlocale(LC_ALL, "Turkish");
    cout << "Maksimum (int): " << maksimum(5, 10, 15, 8) << endl;
    cout << "Maksimum (double): " << maksimum(3.5, 2.1, 4.7, 1.2) << endl;
    cout << "Maksimum (char): " << maksimum('a', 'z', 'm', 'b') << endl;
    return 0;
}
  • template <typename T> ifadesi, fonksiyonun türden bağımsız olmasını sağlar.T yerine istenilen veri türü yazılabilmektedir.
  • maksimum fonksiyonu, birden fazla değeri karşılaştırarak en büyüğünü döndürür. Böylece bu işlem istenilen zamanda kullanılabilir.
  • Aynı fonksiyon farklı veri türleriyle çağrılmıştır, böylece kod tekrarından kaçınılmıştır. Aksi halde her veri türü için ayrı birer fonksiyon tanımlanması gerekecekti.

Sınıf Şablonları (Class Templates)

Sınıf şablonları, farklı veri türleriyle çalışan sınıflar oluşturmak için kullanılır. Bir sınıf şablonu, tek bir kod kümesini farklı veri türleriyle çalıştırma olanağı sağlar. Bu, kod tekrarını azaltır ve kodun yeniden kullanılabilirliğini artırır.

Bir sınıf şablonu tanımlarken, şablon parametresi kullanılarak sınıfın içindeki veri türü belirtilir. Bu sayede sınıf, aynı işlemleri farklı türler için gerçekleştirebilir.


#include <iostream>
#include <locale.h>
using namespace std;

// Genel bir dizi işlemleri sağlayan şablon sınıf
template <typename T>
class Dizi {
private:
    T* elemanlar;
    int boyut;
public:
    Dizi(int b) {
        boyut = b;
        elemanlar = new T[boyut];
    }

    void elemanAta(int index, T deger) {
        if (index >= 0 && index < boyut)
            elemanlar[index] = deger;
    }

    T elemanAl(int index) {
        if (index >= 0 && index < boyut)
            return elemanlar[index];
        return T();
    }

    ~Dizi() {
        delete[] elemanlar;
    }
};

int main() {
    setlocale(LC_ALL, "Turkish");
    Dizi<int> intDizi(5);
    for(int i = 0; i < 5; i++) {
        intDizi.elemanAta(i, i * 10);
        cout << "Eleman " << i << ": " << intDizi.elemanAl(i) << endl;
    }

    Dizi<string> stringDizi(3);
    stringDizi.elemanAta(0, "Metin 1");
    stringDizi.elemanAta(1, "Metin 2");
    cout << "Eleman 0: " << stringDizi.elemanAl(0) << endl;
    cout << "Eleman 1: " << stringDizi.elemanAl(1) << endl;

    return 0;
}
  • template <typename T> ifadesi, sınıfın türe bağımsız olmasını sağlar. T yerine istenilen veri türü yazılabilmektedir.
  • Dizi sınıfı, farklı veri türleriyle kullanılabilir.
  • Bellek yönetimi için dinamik bellek tahsisi yapılmıştır.
  • Örnekte int ve string türleri ile sınıf nesneleri oluşturularak şablonun esnekliği gösterilmiştir.
  • Geliştirici farklı türlerle aynı sınıfı kullanarak kod tekrarını azaltabilir.

C++ Şablonları, kod tekrarını azaltmak ve türe bağımsız programlama yapmak için güçlü bir araçtır. Fonksiyon ve sınıf şablonları ile şablon uzmanlaştırma teknikleri kullanarak daha esnek ve yeniden kullanılabilir kodlar yazabilirsiniz. Şablonlar, C++'ta generic programlamanın temelini oluşturur.

Generic programlama yazılım geliştirme esnasında veri türünden bağımsız kod yazmayı sağlayan bir programlama paradigmasıdır. Generic programlama sayesinde aynı kod, farklı veri türleriyle çalışabilir ve yeniden kullanılabilirlik sağlanır.

Örnekler Visual Studio 2022 ortamında C++ konsol uygulaması üzerinde denenmiştir.

İlişkili İçerikler

Bu makale içerisinde Visual Studio 2022 üzerinde C++ konsol uygulaması oluşturup, üzerinde değişik örnekler denenmektedir. İnceleyip uygulayabilirsiniz.

Nesne Yönelimli Programlama (OOP), yazılım geliştirme sürecinde yeniden kullanılabilir ve bakımı kolay kod yazmak için kullanılan bir yaklaşımdır. C++ dili, OOP destekleyen en popüler dillerden biridir.

Paylaşın
Etiket Bulutu