Elimizde, verileri tutan bir class olsun. Stack class'ı gibi. String için ayrı, int için ayrı, double için ayrı classlar mı oluşturmalıyım ? Tabii ki de hayır. Aynı fonksiyon template'lerinde olduğu gibi classlar içinde, farklı parametler tanımlayabiliriz.
1. Stack üzerinde çalışalım
Stack Elemanları :
Push(element) // stack'e veri ekler
pop () // stack üzerinden veri çıkarır
empty() stack'i elaman olup olmadığını kontrol eder.
Öncelikle bir template ve bir stack class belirlemeliyiz. Template'i belirler iken aynı, fonksiyonda belirlediğimiz gibi belirlenmektedir.
Kod:
template < typname T>
class Stack {
};
Cass'ın tüm methodlarını fonksiyon template olarak tanımlayacağız örnek olarak.
class Stack {
private:
std::vector<T> elems;
public:
Stack(); // constructor
void push (T const &b); // vektöre veri ekler.
void pop (); // vektörden veri çıkartır.
T top () const; // elementi return eder.
};[/CODE]
Bilindiği gibi methodları classın içinde veya dışında tanımlayabiliriz. Normal class mantığından biraz farklı olabilir. Sadece parametre belirtmeliyiz.
içerde tanımladığımızda aşagıdaki gibi kullanabiliriz.