Penjelasan Destructor
Destructor merupakan kebalikan dari constructor, Destructor adalah spesial member function yang akan dieksekusi saat sebelum penghapusan object atau berakhirnya program. destructor biasanya berisi tugas untuk melakukan persiapan sebelum object tersebut dihapus.
Untuk mendirikan destructor sama seperti kita mendirikan constructor tapi dibutuhkan tanda ~
yang diletakan pada awal dari identitas destructor.
Bentuk penulisan
class nama_class{ public : ~nama_class(){ //Definisi Destructor } }
Karakteristik Destructor:
- Destructor memiliki identitas yang sama seperti classnya, dan memiliki tanda
~
pada awal identitas destructor. - Destructor tidak memiliki return type.
- Destructor harus berada dalam label public.
- Destructor tidak mempunyai parameter.
- Destructor tidak bisa dipanggil dari luar class dan bisa di panggil dari dalam member function pada class tersebut (Tapi tidak disarankan).
Destructor akan dieksekusi saat sebelum object tersebut dihapus atau di saat program selesai, Destructor memberi kemudahan untuk para programmer, untuk melakukan persiapan yang dibutuhkan sebelum object itu dihapus. Biasanya digunakan untuk mengerjakan beberapa tugas seperti menyimpan data, melepaskan memori dinamis yang dipesan saat object berjalan, menutup file dan lain sebagainya.
Destructor tidak bisa memilki parameter, dan juga berarti destructor tidak bisa digunakan untuk overloading (Satu class hanya memiliki satu Destructor).
Contoh Program
#include <iostream> #include <string> using namespace std; class siswa{ private: string nama; public: siswa(string); //Constructor ~siswa(); //Destructor }; //Definisi ember Functon siswa::siswa(string iNama){ //Constructor nama = iNama; cout<<nama<<" = Constructor Terpanggil"<<endl; } siswa::~siswa(){ //Destructor cout<<nama<<" = Destructor Terpanggil"<<endl; } int main(){ siswa budi("Budi"); //Constructor Dipanggil siswa *pBudi=new siswa("pBudi");//Constructor Dipanggil delete pBudi;//Destructor Dipanggil return 0; }//Destructor Dipanggil
Di atas adalah contoh program yang mencontohkan cara menggunakan destructor. Dan membuktikan ciri khas destructor yang akan diproses ketika object akan dihapus.
Di baris pertama pada fungsi utama terdapat pernyataan untuk mendirikan object biasa dengan nama budi
. Dan baris kedua terdapat deklarasi object pointer dengan menunjuk ke memori yang telah di alokasikan.
Baris selanjutnya adalah pernyataan yang akan berfungsi untuk menghapus pBudi
, dari tindakan penghapusan tersebut compiler akan memanggil destructor dari class yang digunakan. Dan destructor dari object budi
akan dipanggil pada saat compiler bertemu tanda }
di fungsi utama (Berakhirnya program).
Contoh Program
#include <iostream> using namespace std; class angka{ private: int *arr; int panjang; public: angka(int); //Constructor ~angka(); //Destructor void cetakData(); void isiData(); }; //Definisi member Functon angka::angka(int i){ //Constructor panjang = i; arr = new int[i]; isiData(); } angka::~angka(){ //Destructor cout<<endl; cetakData(); delete[]arr; cout<<"Alamat Array Sudah Dilepaskan"<<endl; } void angka::cetakData(){ for(int i=1;i<=panjang;i++){ cout<<i<<" = "<<arr[i]<<endl; } } void angka::isiData(){ for(int i=1;i<=panjang;i++){ cout<<i<<" = ";cin>>arr[i]; } cout<<endl; } int main(){ angka belajarcpp(3); //Constructor Dipanggil angka *ptrBelajarcpp = new angka(5); //Constructor Dipanggil delete ptrBelajarcpp; //Destructor Dipanggil return 0; }//Destructor Dipanggil
Very nice pattern and superb content material, nothing else we need :D.