Template dalam C++


Teori Singkat

Cetakan (template) adalah metode yang memberitahukan kepada kompiler tentang algoritma mana yang digunakan untuk membentuk suatu fungsi. Dengan cetakan kita dapat membuat suatu fungsi tertentu tetapi bisa untuk tipe data berbeda. Kompiler menangani detil fungsi untuk suatu tipe data yang sedang digunakan. Baik fungsi global maupun kelas dapat diprogram sebagai cetakan.

Pada waktu kita membuat program sebagai cetakan, kita menyediakan nama yang digunakan sebagai simbol untuk tipe data yang tidak diketahui dan menulis kode dengan menggunakan simbol itu. Berikut contoh fungsi yang dideklarasikan sebagai cetakan.

// cari nilai terkecil dari 2 nilai

template <class T> T Min(T a, T b)

{

if(a < b)

return a;

else

return b;

}

Pada baris pertama, kata kunci template dalam definisi fungsi diikuti oleh <class, suatu simbol untuk tipe data yang digunakan, kemudian diikuti oleh >. Meskipun digunakan kata class pada definisi cetakan, sebenarnya cetakan ini tidak selalu harus menggunakan tipe kelas, bahkan tipe sederhanapun bisa dipakai, misalnya int, float dan lain-lain. Program berikut menggunakan cetakan fungsi Min() dengan parameter bertipe int dan float.

void main()

{

int a = 10, b = 15;

cout << Min(a, b) << endl;

cout << Min(12.4, 10.6) << endl;

getchar();

}

Hasil program:

10

10.6

Kelas juga dapat didefinisikan sebagai cetakan. Sintak cetakan kelas hampir sama dengan cetakan fungsi. Program berikut menggunakan cetakan kelas yang menyimpan data dalam vektor (larik). Pada contoh ini data yang disimpan bertipe int. Sebenarnya data bisa bertipe sembarang, bahkan bertipe kelas.

#include <iostream.h>

// kelas Vektor berupa template untuk larik data

template <class T> class Vektor

{

public:

Vektor(int);  // konstruktor, parameter = jumlah data

~Vektor()  { delete [] data; } // destruktor

// operator [], agar data dapat diakses lewat indeks

T& operator[] (int i) { return data[i]; }

private:

T* data;      // data yang disimpan

int ukuran;   // jumlah item maksimum

};

template <class T> Vektor<T>::Vektor(int n)

{

data = new T[n]; // ciptakan larik data n buah, bertipe T

ukuran = n;

}

void main()

{

Vektor<int> x(5);

for(int i=0; i<5; i++)

x[i] = i;

for(int i=0; i<5; i++)

cout << x[i] << “, “;

cout << endl;

getchar();

}

Hasil program:

0, 1, 2, 3, 4,

~ oleh 12puby pada 9 Juni 2010.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

 
%d blogger menyukai ini: