Konstruktor dan Destruktor dalam C++


Teori Singkat

Untuk mengisi anggota data dalam kelas perlu ditambah fungsi untuk mengisi data itu. kelas menyediakan mekanisme untuk mengisian anggota datanya lewat konstruktor. Dengan konstruktor kita tidak perlu membuat fungsi IsiData, karena tugas ini dapat digantikan oleh konstruktor.

Konstruktor adalah fungsi khusus anggota kelas yang otomatis dijalankan pada saat penciptaan objek (mendeklarasikan instance). Konstruktor ditandai dengan namanya, yaitu sama dengan nama kelas. Konstruktor tidak mempunyai tipe hasil, bahkan juga bukan bertipe void. Biasanya konstruktor dipakai untuk inisialisasi anggota data dan melakukan operasi lain seperti membuka file dan melakukan alokasi memori secara dinamis. Meskipun konstruktor tidak harus ada di dalam kelas, tetapi jika diperlukan konstruktor dapat lebih dari satu.

Tiga jenis konstruktor:

  1. Konstruktor default : tidak dapat menerima argumen, anggota data diberi nilai awal tertentu.
  2. Konstrukor penyalinan : anggota data diberi nilai awal berasal dari parameter.
  3. Konstruktor penyalinan objek lain : parameter berupa objek lain, anggota data diberi nilai awal dari objek lain.

Perhatikan kelas TTitik berikut. Kelas ini mempunyai tiga buah konstruktor.

class TTitik

{

private:

int x;

int y;

public:

// konstruktor default, mengisi 2 buah anggota data

// dengan nilai tertentu (yaitu 0 dan 0)

TTitik()

{

x = 0;

y = 0;

}

// konstruktor penyalinan, mengisi 2 buah anggota data

// dengan nilai yang diambilkan dari parameter

TTitik(int nx, int ny)

{

x = nx;

y = ny;

}

// konstruktor penyalinan objek, mengisi 2 buah anggota data

// dengan nilai yang diambilkan dari parameter yang berupa objek

TTitik(const titik& tt)

{

x = tt.x;

y = tt.y;

}

int NX()  { return x; } // fungsi anggota biasa

int NY()  { return y; } // fungsi anggota biasa

};

Pemanggilannya dalam fungsi main() bisa seperti berikut.

void main()

{

// menciptakan objek sekaligus memanggil konstruktor default

titik t1;

// menciptakan objek sekaligus memanggil konstruktor penyalinan

titik t2(10, 20);

// menciptakan objek sekaligus memanggil konstruktor

// penyalinan objek

titik t3(t2);

// melihat hasil

cout << “t1 = ” << t1.NX() << “, ” << t1.NY() << endl;

cout << “t2 = ” << t2.NX() << “, ” << t2.NY() << endl;

cout << “t3 = ” << t3.NX() << “, ” << t3.NY() << endl;

getch();

}

Sejalan dengan ini C++ menyediakan fungsi destruktor (penghancur atau pelenyap) yang secara otomatis akan dijalankan pada saat berakhirnya kehidupan objek. Fungsi destruktor adalah untuk mendealokasi memori dinamis yang diciptakan konstruktor. Nama destruktor sama dengan nama kelas ditambah awalan karakter tilde (~). Di dalam kelas tidak harus mempunyai destruktor. Destruktor hanya diperlukan bila ada dealokasi memori. Perhatikan contoh berikut.

class TCoba

{

private:

char *nama;

public:

TCoba()  // konstruktor default

{

nama = new char[20];  // alokasi variabel dinamis

strcpy(nama, “AGUS”); // mengisi variabel dinamis

}

~TCoba()  // destruktor

{

delete [] nama;       // dealokasi variabel dinamis

cout << “variabel dinamis dalam kelas telah hilang”;

}

}

Praktek

1. Tulislah program berikut lewat ConsoleWizard pada C++Builder.

#include <string.h>

#include <iostream.h>

//——————————————————-

#pragma argsused

class TNilai

{

private:

char *mataKuliah;

char nilai;

int  sks;

public:

// konstruktor default, mengisi 3 data dengan

// nilai default (tertentu)

TNilai()

{

mataKuliah = new char[20];  // alokasi var. dinamis

strcpy(mataKuliah, “Praktikum PBO”);

nilai = ‘B’;

sks = 2;

}

void Cetak()

{

cout << “mata kuliah = ” << mataKuliah << endl

<< “sks         = ” << sks << endl

<< “nilai       = ” << nilai << endl;

}

};

void main()

{

TNilai *nilai; // deklarasi pointer ke kelas TNilai

// ciptakan objek sekaligus memanggil konstruktor default

nilai = new TNilai;

nilai->Cetak(); // memanggil fungsi anggota

getchar();

delete nilai;  // menghapus instan dari kelas TNilai

getchar();

}

~ oleh 12puby pada 9 Juni 2010.

2 Tanggapan to “Konstruktor dan Destruktor dalam C++”

  1. kereenn…..
    ajarin aku donk,,

  2. thank
    artikelnya sangat bermanfaat

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

 
%d blogger menyukai ini: