İleri c++ eğitimi, Template kullanımı kısım 2. (Class template)

byanigli

Hectopat
Katılım
3 Ocak 2014
Mesajlar
543
Yer
İzmir, Turkey, Turkey
Daha fazla  
Cinsiyet
Erkek
Meslek
student of software engineering
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.
Kod:
void push (T &const elem)
{
elems.push_back(elem);
}

Dışarda tanımlamak biraz farklı olabilir.


Kod:
template <typename T>
void Stack<T>:: push (T &const elem)
{
elems.push_back(elem);
}
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…