Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

Menguasai Template Kelas C++: Panduan Praktis

Menguasai Template Kelas C++: Panduan Praktis

Pelajari cara memanfaatkan template kelas C++ untuk menulis kode yang fleksibel dan type-agnostic dengan contoh dunia nyata yang jelas.

Template adalah sumbu utama pemrograman generik dalam C++. Mereka memungkinkan Anda membuat komponen yang dapat digunakan kembali yang bekerja dengan setiap tipe data, meningkatkan kejelasan kode dan mengurangi duplikasi. C++ menawarkan dua jenis template: template fungsi dan template kelas.

Template kelas memungkinkan Anda untuk mendefinisikan satu kelas yang menyesuaikan diri dengan berbagai tipe data. Ini tidak hanya mempersingkat kode Anda tetapi juga membuatnya lebih mudah untuk dipelihara.


Mendeklarasikan Template Kelas

Template kelas dimulai dengan kata kunci template, diikuti oleh daftar parameter template yang diapit dengan tanda kurung sudut. Setelah itu datang definisi kelas sebenarnya.

template <class T> class MyClass { private: T var; public: T getVar() const; };

Di sini, T adalah penampung untuk tipe data yang akan disediakan saat template diinstantiasi. Kata kunci class dapat diganti dengan typename tanpa mengubah semantik.


Menginstantiasi Template Kelas

Setelah template didefinisikan, Anda dapat membuat objek dengan menentukan tipe yang diinginkan:

MyClass<int> intObj; MyClass<float> floatObj; MyClass<std::string> stringObj;

Setiap instantiasi menghasilkan kelas konkret yang disesuaikan dengan tipe yang ditentukan selama kompilasi.


Contoh 1: Pembungkus Angka Generik

#include <iostream> using namespace std; // Template kelas yang menyimpan satu nilai dari setiap tipe template <class T> class Number { private: T value; public: Number(T v) : value(v) {} T getValue() const { return value; } }; int main() { Number<int> intNum(7); Number<double> doubleNum(7.7); cout << "Angka int = " << intNum.getValue() << endl; cout << "Angka double = " << doubleNum.getValue() << endl; return 0; }

Output

Angka int = 7 Angka double = 7.7

Perhatikan bahwa parameter template T digunakan untuk variabel anggota, argumen konstruktor, dan tipe pengembalian, yang memungkinkan kelas untuk bekerja dengan setiap tipe.


Mendefinisikan Anggota di Luar Kelas

Ketika fungsi anggota cukup besar atau dibagikan di seluruh spesialisasi, Anda dapat mendefinisikannya di luar tubuh kelas:

template <class T> class Sample { public: T identity(); }; // Definisi di luar template <class T> T Sample<T>::identity() { return static_cast<T>(1); }

Perhatikan pengulangan deklarasi template<class T> sebelum definisi di luar kelas.


Contoh 2: Kalkulator Menggunakan Template Kelas

#include <iostream> using namespace std; template <class T> class Calculator { private: T a, b; public: Calculator(T x, T y) : a(x), b(y) {} T add() const { return a + b; } T subtract() const { return a - b; } T multiply() const { return a * b; } T divide() const { return a / b; } void display() const { cout << "a: " << a << ", b: " << b << endl; cout << "a + b = " << add() << endl; cout << "a - b = " << subtract() << endl; cout << "a * b = " << multiply() << endl; cout << "a / b = " << divide() << endl; } }; int main() { Calculator<int> intCalc(2, 1); Calculator<float> floatCalc(2.4f, 1.2f); cout << "Hasil int:\n"; intCalc.display(); cout << "\nHasil float:\n"; floatCalc.display(); return 0; }

Output

Hasil int: a: 2, b: 1 a + b = 3 a - b = 1 a * b = 2 a / b = 2 Hasil float: a: 2.4, b: 1.2 a + b = 3.6 a - b = 1.2 a * b = 2.88 a / b = 2

Template dengan Beberapa Parameter

Template kelas dapat menerima lebih dari satu parameter, dan Anda bahkan dapat menyediakan tipe default:

template <class T, class U, class V = int> class MultiParam { T first; U second; V third; };

Contoh 3: Template Multi-Parameter

#include <iostream> using namespace std; template <class T, class U, class V = char> class ClassTemplate { private: T var1; U var2; V var3; public: ClassTemplate(T v1, U v2, V v3) : var1(v1), var2(v2), var3(v3) {} void print() const { cout << "var1 = " << var1 << endl; cout << "var2 = " << var2 << endl; cout << "var3 = " << var3 << endl; } }; int main() { ClassTemplate<int, double> obj1(7, 7.7, 'c'); cout << "Nilai obj1:\n"; obj1.print(); ClassTemplate<double, char, bool> obj2(8.8, 'a', false); cout << "\nNilai obj2:\n"; obj2.print(); return 0; }

Output

Nilai obj1: var1 = 7 var2 = 7.7 var3 = c Nilai obj2: var1 = 8.8 var2 = a var3 = 0

Dalam contoh ini, parameter template ketiga default ke char, tetapi dapat diganti seperti yang ditunjukkan dengan bool di obj2.

Bahasa C

  1. Kata Kunci Static C#: Menguasai Variabel, Metode, dan Kelas Statis
  2. Memahami Kelas Bersarang C#: Definisi, Penggunaan, dan Warisan
  3. Menguasai Operator C++: Panduan Lengkap dengan Contoh Praktis
  4. Komentar C++: Praktik Terbaik untuk Kode yang Mudah Dibaca dan Dipelihara
  5. Memahami Kelas Penyimpanan C++: Cakupan, Umur, dan Penggunaan
  6. Memahami Polimorfisme C++: Panduan Praktis
  7. Menguasai Abstraksi Data C++: Sederhanakan Desain dengan Pemisahan Antarmuka-Implementasi
  8. Enkapsulasi Data C++: Lindungi Kode Anda
  9. Antarmuka C++: Menguasai Kelas Abstrakt & Fungsi Virtual Murni
  10. Menguasai Template C++: Panduan Pemrograman Generik