C++ Lanjutan | #2 Template

Template dalam C++
Thumbnail C++ Template

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