Minggu, 13 Februari 2011

Constructor and Destructor

Proses inisialisasi data member di dalam sebuah class dilakukan oleh sebuah fungsi anggota (member function) yang disebut Constructor. Fungsi ini bersifat unik karena mempunyai nama yang sama dengan class-nya. Fungsi constructor memiliki type return value (nilai kembalian) void namun bisa diberi atau tidak diberi argument/parameter. Constructor dijalankan secara otomatis ketika obyek dari sebuah class dibuat (umumnya di fungsi utama - main).

class coba

{

int kode;

public :

coba()

{ kode = 1;

};

void show()

{ cout << “Kode = “ << kode << endl;

};

};

Void main()

{

coba cobaku;

cobaku.show();

}

Gambar.1.1. Simple constructor.

Sedangkan destructor juga dijalankan secara otomatis tapi ketika obyek dari sebuah class sudah tidak digunakan lagi/jalannya program sudah keluar dari scope (ruang lingkup) batasan (yaitu batas kurung kurawal – {}). Destructor umumnya dipakai untuk menghapus obyek dari memori komputer supaya lokasi memori yang sebelumnya ditempatinya bisa dipakai obyek yang lain. Penulisan fungsi destructor hampir sama dengan constructor, hanya saja di awalnya dituliskan karakter cacing (~). Yang beda dari sebuah destructor adalah tidak adanya parameter/argument di dalam header fungsinya.

#include "iostream.h"

int count = 0;

class alpha

{ public: alpha()

{ count++;

cout << "\nno. of object created" << count;

}

~alpha() // destructor defined

{ cout << "\nno. of object destroyed" << count;

count--;

}

};

void main()

{ cout << "\nEnter MAIN\n\n";

alpha a1, a2, a3, a4;

{ cout << "\nEnter Blok 1\n";

alpha a5;

} // call destructor a5

{ cout << "\nEnter Blok 2\n";

alpha a6;

} // call destructor a6

} // call destructor a1, a2, a3, a4

Gambar.1.2. Destructor

Di dalam sebuah class dimungkinkan ada lebih dari satu buah fungsi constructor untuk memfasilitasi kebutuhan program yang berbeda-beda. Hal ini disebut dengan istilah Multiple Constructor. Sedangkan jenis-jenis constructor sendiri setidaknya ada tiga yaitu default constructor, parameterized constructor dan constructor dengan default argument.

// multiple constructors

#include "iostream.h"

class integer

{ int m, n;

public: integer() { m=0; n=0; }; //default arguments

integer( int x, int y ) //parameterized

{ m=x; n=y;

};

integer(integer &i) //copy constructors

{ m=i.m; n=i.n;

};

void display(void)

{ cout<<"m = "<

};

};

main()

{ integer int1; //call default argument

integer int2 ( 10, 100 ); //call parametrized

integer int3 ( int1 ); //call copy constructor

int1.display();

int2.display();

int3.display();

}

Gambar.1.3. Multiple Constructor

Yang dimaksud default constructor adalah fungsi constructor yang tidak memiliki argument/parameter, dengan kata lain parameternya bertipe void (kosong). Sedangkan parameterized constructor berarti fungsi constructor yang mempunyai parameter, baik satu maupun lebih.

//parameterized constructor

#include "iostream.h"

class integer

{ int m, n;

public: integer ( int x, int y);

void display ( void )

{

cout << "m = "<< m <<" n = "<< n <<"\n";

}

};

integer :: integer ( int x, int y = 0) //default argument

{ m = x; n = y; };

main()

{ integer int1 ( 10, 100 ); //implicit call

integer int2 = integer ( 50 ); //explicit call

int1.display();

int2.display();

}

Gambar.1.4. Parameterized Constructor

Kalau constructor dengan default argument berarti ada salah satu atau lebih parameter fungsi constructor-nya sudah disediakan nilai awal sebagai nilai otomatis yang akan diberikan ketika programmer tidak mencantumkanya.

Tidak ada komentar:

Posting Komentar