Bahasa C
Dalam tutorial ini, kita akan belajar tentang template kelas di C++ dengan bantuan contoh.
Templat adalah fitur canggih C++ yang memungkinkan kita menulis program generik. Ada dua cara untuk mengimplementasikan template:
Mirip dengan templat fungsi, kita dapat menggunakan templat kelas untuk membuat satu kelas untuk bekerja dengan tipe data yang berbeda.
Template kelas sangat berguna karena dapat membuat kode kita lebih pendek dan lebih mudah dikelola.
Templat kelas dimulai dengan kata kunci template
diikuti oleh parameter template di dalam <>
yang diikuti oleh deklarasi kelas.
template <class T>
class className {
private:
T var;
... .. ...
public:
T functionName(T arg);
... .. ...
};
Dalam deklarasi di atas, T
adalah argumen template yang merupakan placeholder untuk tipe data yang digunakan, dan class
adalah kata kunci.
Di dalam badan kelas, variabel anggota var dan fungsi anggota functionName()
keduanya bertipe T
.
Setelah kita mendeklarasikan dan mendefinisikan template kelas, kita dapat membuat objeknya di kelas atau fungsi lain (seperti main()
function) dengan sintaks berikut
className<dataType> classObject;
Misalnya,
className<int> classObject;
className<float> classObject;
className<string> classObject;
// C++ program to demonstrate the use of class templates
#include <iostream>
using namespace std;
// Class template
template <class T>
class Number {
private:
// Variable of type T
T num;
public:
Number(T n) : num(n) {} // constructor
T getNum() {
return num;
}
};
int main() {
// create object with int type
Number<int> numberInt(7);
// create object with double type
Number<double> numberDouble(7.7);
cout << "int Number = " << numberInt.getNum() << endl;
cout << "double Number = " << numberDouble.getNum() << endl;
return 0;
}
Keluaran
int Number = 7 double Number = 7.7
Dalam program ini. kita telah membuat template kelas Number
dengan kode
template <class T>
class Number {
private:
T num;
public:
Number(T n) : num(n) {}
T getNum() { return num; }
};
Perhatikan bahwa variabel num , argumen konstruktor n , dan fungsi getNum()
bertipe T
, atau memiliki jenis pengembalian T
. Itu berarti mereka bisa dari jenis apa pun.
Di main()
, kita telah mengimplementasikan template kelas dengan membuat objeknya
Number<int> numberInt(7);
Number<double> numberDouble(7.7);
Perhatikan kode Number<int>
dan Number<double>
pada kode di atas.
Ini membuat definisi kelas masing-masing untuk int
dan float
, yang kemudian digunakan sebagaimana mestinya.
Adalah wajib untuk menentukan tipe ketika mendeklarasikan objek dari templat kelas. Jika tidak, kompilator akan menghasilkan kesalahan.
//Error
Number numberInt(7);
Number numberDouble(7.7);
Misalkan kita perlu mendefinisikan fungsi di luar templat kelas. Kita dapat melakukannya dengan kode berikut:
template <class T>
class ClassName {
... .. ...
// Function prototype
returnType functionName();
};
// Function definition
template <class T>
returnType ClassName<T>::functionName() {
// code
}
Perhatikan bahwa kode template <class T>
diulang saat mendefinisikan fungsi di luar kelas. Ini diperlukan dan merupakan bagian dari sintaks.
Jika kita melihat kode di Contoh 1 , kami memiliki fungsi getNum()
yang didefinisikan di dalam templat kelas Number
.
Kita dapat mendefinisikan getNum()
di luar Number
dengan kode berikut:
template <class T>
class Number {
... .. ...
// Function prototype
T getnum();
};
// Function definition
template <class T>
T Number<T>::getNum() {
return num;
}
Program ini menggunakan template kelas untuk melakukan penjumlahan, pengurangan, perkalian dan pembagian dua variabel num1 dan num2 .
Variabel dapat berupa jenis apa pun, meskipun kami hanya menggunakan int
dan float
ketik dalam contoh ini.
#include <iostream>
using namespace std;
template <class T>
class Calculator {
private:
T num1, num2;
public:
Calculator(T n1, T n2) {
num1 = n1;
num2 = n2;
}
void displayResult() {
cout << "Numbers: " << num1 << " and " << num2 << "." << endl;
cout << num1 << " + " << num2 << " = " << add() << endl;
cout << num1 << " - " << num2 << " = " << subtract() << endl;
cout << num1 << " * " << num2 << " = " << multiply() << endl;
cout << num1 << " / " << num2 << " = " << divide() << endl;
}
T add() { return num1 + num2; }
T subtract() { return num1 - num2; }
T multiply() { return num1 * num2; }
T divide() { return num1 / num2; }
};
int main() {
Calculator<int> intCalc(2, 1);
Calculator<float> floatCalc(2.4, 1.2);
cout << "Int results:" << endl;
intCalc.displayResult();
cout << endl
<< "Float results:" << endl;
floatCalc.displayResult();
return 0;
}
Keluaran
Int results: Numbers: 2 and 1. 2 + 1 = 3 2 - 1 = 1 2 * 1 = 2 2 / 1 = 2 Float results: Numbers: 2.4 and 1.2. 2.4 + 1.2 = 3.6 2.4 - 1.2 = 1.2 2.4 * 1.2 = 2.88 2.4 / 1.2 = 2
Pada program di atas, kita telah mendeklarasikan template kelas Calculator
.
Kelas berisi dua anggota pribadi bertipe T
:num1 &num2 , dan konstruktor untuk menginisialisasi anggota.
Kami juga memiliki add()
, subtract()
, multiply()
, dan divide()
fungsi yang memiliki tipe kembalian T
. Kami juga memiliki void
fungsi displayResult()
yang mencetak hasil fungsi lainnya.
Dalam main()
, kita telah membuat dua objek Calculator
:satu untuk int
tipe data dan satu lagi untuk float
tipe data.
Calculator<int> intCalc(2, 1);
Calculator<float> floatCalc(2.4, 1.2);
Ini meminta kompiler untuk membuat dua definisi kelas untuk masing-masing tipe data selama kompilasi.
Di C++, kita dapat menggunakan beberapa parameter template dan bahkan menggunakan argumen default untuk parameter tersebut. Misalnya,
template <class T, class U, class V = int>
class ClassName {
private:
T member1;
U member2;
V member3;
... .. ...
public:
... .. ...
};
#include <iostream>
using namespace std;
// Class template with multiple and default parameters
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) {} // constructor
void printVar() {
cout << "var1 = " << var1 << endl;
cout << "var2 = " << var2 << endl;
cout << "var3 = " << var3 << endl;
}
};
int main() {
// create object with int, double and char types
ClassTemplate<int, double> obj1(7, 7.7, 'c');
cout << "obj1 values: " << endl;
obj1.printVar();
// create object with int, double and bool types
ClassTemplate<double, char, bool> obj2(8.8, 'a', false);
cout << "\nobj2 values: " << endl;
obj2.printVar();
return 0;
}
Keluaran
obj1 values: var1 = 7 var2 = 7.7 var3 = c obj2 values: var1 = 8.8 var2 = a var3 = 0
Dalam program ini, kami telah membuat template kelas, bernama ClassTemplate
, dengan tiga parameter, dengan salah satunya sebagai parameter default.
template <class T, class U, class V = char>
class ClassTemplate {
// code
};
Perhatikan kode class V = char
. Artinya V
adalah parameter default yang tipe defaultnya adalah char
.
Di dalam ClassTemplate
, kami mendeklarasikan 3 variabel var1 , var2 dan var3 , masing-masing sesuai dengan salah satu parameter template.
class ClassTemplate {
private:
T var1;
U var2;
V var3;
... .. ...
... .. ...
};
Di main()
, kita membuat dua objek ClassTemplate
dengan kode
// create object with int, double and char types
ClassTemplate<int, double> obj1(7, 7.7, 'c');
// create object with double, char and bool types
ClassTemplate<double, char, bool> obj2(8, 8.8, false);
Di sini,
int
double
char
double
char
bool
Untuk obj1 , T = int
, U = double
dan V = char
.
Untuk obj2 , T = double
, U = char
dan V = bool
.
Bahasa C
C++ Multiple, Multilevel dan Hierarchical Inheritance Dalam tutorial ini, kita akan belajar tentang berbagai model pewarisan dalam pemrograman C++:Pewarisan Berganda, Bertingkat, dan Hierarki beserta contohnya. Pewarisan adalah salah satu fitur inti dari bahasa pemrograman berorientasi objek. Hal i
Fungsi Virtual C++ Dalam tutorial ini, kita akan belajar tentang fungsi virtual C++ dan penggunaannya dengan bantuan contoh. Fungsi virtual adalah fungsi anggota di kelas dasar yang ingin kita definisikan ulang di kelas turunan. Pada dasarnya, fungsi virtual digunakan di kelas dasar untuk memastik
Apa itu Kelas? Kelas C++ menggabungkan data dan metode untuk memanipulasi data menjadi satu. Kelas juga menentukan bentuk objek. Data dan metode yang terkandung dalam sebuah kelas dikenal sebagai anggota kelas. Kelas adalah tipe data yang ditentukan pengguna. Untuk mengakses anggota kelas, kami men
1) Jelaskan apa itu kelas dalam C++? Kelas dalam C++ dapat didefinisikan sebagai kumpulan fungsi dan data terkait di bawah satu nama. Ini adalah cetak biru objek. Program C++ dapat terdiri dari sejumlah kelas. 2) Bagaimana Anda bisa menentukan kelas di C++? Dengan menggunakan kata kunci kelas d