Template dalam C++
Dalam C++, template memungkinkan kita membuat fungsi dan kelas yang dapat bekerja dengan tipe data apapun. Template sangat berguna untuk menulis kode yang lebih fleksibel dan dapat digunakan ulang. Pada artikel ini, kita akan membahas tiga topik utama: Function Template, Class Template, dan Template Spesialisasi.
1. Function Template
Function template memungkinkan kita membuat fungsi yang bekerja dengan berbagai tipe data tanpa harus menulis ulang fungsi untuk setiap tipe. Berikut adalah contoh sederhana:
#include <iostream>
template <typename T>
T maksimum(T a, T b) {
return (a > b) ? a : b;
}
int main() {
std::cout << "Maksimum dari 3 dan 7: " << maksimum(3, 7) << std::endl;
std::cout << "Maksimum dari 5.5 dan 2.3: " << maksimum(5.5, 2.3) << std::endl;
return 0;
}
Fungsi maksimum()
dapat bekerja dengan tipe data int
, float
, atau tipe lainnya, berkat penggunaan template
.
2. Class Template
Class template memungkinkan kita mendefinisikan kelas yang dapat bekerja dengan berbagai tipe data. Contoh class template sederhana:
#include <iostream>
template <typename T>
class Kotak {
private:
T panjang;
public:
Kotak(T p) : panjang(p) {}
T getPanjang() {
return panjang;
}
};
int main() {
Kotak<int> kotakInt(10);
Kotak<double> kotakDouble(5.5);
std::cout << "Panjang kotak int: " << kotakInt.getPanjang() << std::endl;
std::cout << "Panjang kotak double: " << kotakDouble.getPanjang() << std::endl;
return 0;
}
Kelas Kotak
di atas dapat digunakan dengan tipe data apapun, seperti int
atau double
, berkat penggunaan class template
.
3. Template Spesialisasi
Template Spesialisasi memungkinkan kita memberikan implementasi khusus untuk tipe data tertentu. Contoh berikut menunjukkan spesialisasi untuk tipe char*
:
#include <iostream>
template <typename T>
class Kotak {
private:
T nilai;
public:
Kotak(T n) : nilai(n) {}
void tampilkan() {
std::cout << "Nilai: " << nilai << std::endl;
}
};
// Spesialisasi untuk tipe char*
template <>
class Kotak<char*> {
private:
char* nilai;
public:
Kotak(char* n) : nilai(n) {}
void tampilkan() {
std::cout << "Nilai string: " << nilai << std::endl;
}
};
int main() {
Kotak<int> kotakInt(100);
Kotak<char*> kotakStr("Hello");
kotakInt.tampilkan();
kotakStr.tampilkan();
return 0;
}
Dalam contoh di atas, kelas Kotak
memiliki implementasi khusus untuk tipe char*
. Ini memungkinkan kita mendefinisikan perilaku yang berbeda untuk tipe data tertentu.
Kesimpulan
Template dalam C++ adalah fitur yang sangat kuat yang memungkinkan kita menulis kode yang generik dan fleksibel. Dengan menggunakan Function Template, Class Template, dan Template Spesialisasi, kita dapat menciptakan program yang lebih efisien dan mudah di-maintain. Fitur ini sangat berguna saat kita bekerja dengan tipe data yang berbeda, namun memerlukan logika yang serupa.
Komentar
Posting Komentar