Rabu, 23 September 2009

CONSTRUCTOR

Fungsi & sifat constructor
• Fungsi : Untuk memberi nilai awal atribut suatu class.
• Sifat :
otomatis dijlnkan pada saat objek class diciptakan.
tidak bertipe walaupun void sekalipun , dan tdk punya return value.
nama constructor = nama class

Contoh :
// classes example
#include
class CRectangle {
int width, height;
public:
CRectangle (int,int);
int area (void) {return (width*height);}
};
CRectangle::CRectangle (int a, int b) {
width = a;
height = b;
}
int main () {
CRectangle rect (3,4);
CRectangle rectb (5,6);
cout << "rect area: " << rect.area() << endl;
cout << "rectb area: " << rectb.area() << endl;
}

*OUTPUTnya*


Macam-macam constructor:
• Default constructor
nilai awal dg konstanta, tanpa parameter
Empty Constructor.
• Copy constructor
nilai awal dg parameter, terdapat parameter
• Object copy constructor
nilai awal berdsr nilai angg. objek lain, parameter berupa objek dari class yang sama

Destructor
Constructor dipanggil  Ada space di memori yang terpakai  Bebaskan memori setelah selesai Destructor

Fungsi & sifat destructor
• Fungsi : membebaskan memori yang digunakan variabel dinamis.
• Sifat :
otomatis dijalankan pada saat objek dilenyapkan.
tdk terdapat argumen (parameter)/void.
nama destructor = ~nama class

Contoh :
// example on constructors and destructors
#include
class CRectangle {
int *width, *height;
public:
CRectangle (int,int);
~CRectangle ();
int area (void) {return (*width * *height);}
};
CRectangle::CRectangle (int a, int b) {
width = new int;
height = new int;
*width = a;
*height = b;
}
CRectangle::~CRectangle () {
delete width;
delete height;
}
int main () {
CRectangle rect (3,4), rectb (5,6);
cout << "rect area: " << rect.area() << endl;
cout << "rectb area: " << rectb.area() << endl;
return 0;
}



*OUTPUTnya*


Keterangan :
Program diatas menggunakan constructor untuk memberi nilai variable height dan width.
Constructornya adalah sbb:

CRectangle::CRectangle (int a, int b) {
width = new int;
height = new int;
*width = a;
*height = b;
}

Karena nantinya space memori yang ditempati height dan width akan dibebaskan setelah selesai maka keduanya dideklarasikan sebagai dynamic variable (pointer). Hanya dynamic variable yang dapat dihilangkan dari memori. Pembebasan memori menggunakan destructor sbb :
CRectangle::~CRectangle () {
delete width;
delete height;
}


Contoh :
// overloading class constructors
#include
class CRectangle {
int width, height;
public:
CRectangle ();
CRectangle (int,int);
int area (void) {return (width*height);}
};
CRectangle::CRectangle () {
width = 5;
height = 5;
}
CRectangle::CRectangle (int a, int b) {
width = a;
height = b;
}
int main () {
CRectangle rect (3,4);
CRectangle rectb;
cout << "rect area: " << rect.area() << endl;
cout << "rectb area: " << rectb.area() << endl;
}

*OUTPUTnya*


Keterangan :
Pada contoh diatas digunakan dua constructor yakni :
a. default konstructor
CRectangle::CRectangle () {
width = 5;
height = 5;
}

b. copy constructor
CRectangle::CRectangle (int a, int b) {
width = a;
height = b;
}

Tidak ada komentar:

Posting Komentar