Pertama - tama mari kita
membahas tentang function template.Untuk itu marilah kita perhatikan contoh
berikut.
template
<class tipe>
void
swap(tipe &a,tipe &b)
{
tipe
c;
c
= a;
a
= b;
b
= c;
}
Pada contoh diatas
terdapat sebuah fungsi swap (menukar 2 buah variable) menggunakan template..
Untuk pemanggilan fungsi dilakukan seperti pemanggilan fungsi tanpa template.
Untuk itu mari perhatikan penggalan perintah untuk menggunakan fungsi swap.
Contoh template dengan instance tipe int
void main(void)
{
int a,b;
a = 10;
b = 20;
swap(a,b); cout
<< a << “ “ << b << endl;
}
Contoh template dengan instance tipe float
void main(void)
{
float a,b;
a = 10.0;
b = 20.0;
swap(a,b); cout
<< a << “ “ << b << endl;
}
Contoh template dengan instance struct tTes
struct tTes
{
int a,b;
};
void main(void)
{
tTes a,b;
a.a = 10;
a.b = 20;
b.a = 30;
b.b = 40;
swap(a,b);
cout <<
a.a << " " << a.b << " " << b.a
<< " " << b.b;
}
Dapat dilihat , dengan menggunakan template kita telah
menghemat waktu untuk menulis fungsi Pada fungsi swap diatas , juga tidak
menutup kemungkinan untuk menukar 2 buah kelas.
Pada contoh diatas fungsi tidak akan bekerja jika variable
yang ditukar berbeda tipe . Walaupun kekerabatannya cukup dekat . Anda tidak
bisa menukar tipe int (16bit) dengan tipe short (16 bit). Ini terkait dengan
pendeklarasian template pada fungsi swap.
template
<class tipe>
void swap(tipe &a,tipe &b)
Pada pendeklarasian fungsi swap dapat dilihat bahwa formal
parameter a sama dengan formal parameter b . Oleh sebab itu sudah seharusnya
tipe pada actual parameter pun harus sama. Untuk contoh fungsi swap diatas
sebaiknya anda tidak menggunakan type-casting untuk mengatasi masalah diatas.
Mengingat fungsi swap diatas dikirim by reference . (Yang mana dalam pengiriman
fungsi menggunakan reference berkaitan dengan pointer). Tentu saja ukuran dari
variable menjadi sangat penting karena kita telah merubah ukuran dari variable
(type casting) bisa saja terjadi hasil yang tak terduga . Walupun kadang –
kadang memberikan hasil yang benar. Kecuali jika ukuran kedua tipe variable
tersebut benar - benar sama , anda dapat menggunakan type–casting dalam hal
ini.
Untuk mendefiniskan lebih dari satu type pada template
anda dapat menggnakan koma sebagai pemisah
contoh :
Template dengan 2 buah tipe
template <class tipe1,class tipe2>
0 komentar:
Posting Komentar