Object dan Fungsi

Dalam membahas topik ini, bayangkan bahwa class adalah suatu tipe data baru.

Suatu fungsi, dalam C/C++ dapat dituliskan:

tipe_keluaran nama_fungsi( tipe_parameter_1 parameter_1,

tipe_parameter_2 parameter_2,

…...........................................,

tipe_parameter_n parameter_n)

maka, bila kita menggunakan object dapat ditulis:

nama_class nama_fungsi( nama_class_object_1 object_1,

nama_class_object_2 object_2, ….............................................,

nama_class_object_n object_n)

contoh fungsi dengan parameter berupa object:

#include

class Label

{

public:

Label(char *label)

{

lbl = label;

}

~Label()

{}

char *lbl;

int lenLabel;

};

void cetak(Label L)

{

std::cout << L.lbl;

std::cout << '\n';

}

int main()

{

Label iLabel("Hello");

cetak(iLabel);

return 0;

}

Pada contoh diatas, konstruktor class label membutuhkan parameter masukan bertipe char * , sehingga saat instansi, kita juga mendefinisikan parameter ini:

Label iLabel("Hello");

saat pemanggilan fungsi cetak, L dalam parameter cetak adalah reference ke iLabel dalam fungsi main karena dalam fungsi main, cetak dipanggil dengan:

cetak(iLabel);

oleh karena itu, member dari object iLabel dapat diakses pula oleh L, sehingga kita bisa mengakses variable member lbl dengan cara:

L.lbl;

contoh fungsi dengan keluaran berupa object:

#include

#include

class Label

{

public:

Label()

{}

Label(char *label)

{

lbl = label;

lenLabel = strlen(label);

}

~Label()

{}

public:

char *lbl;

int lenLabel;

};

Label cetak1(char *kar)

{

Label lbl(kar);

return lbl;

}

int main()

{

Label lb("Hai Dunia");

lb = cetak1("Hello World");

std::cout << lb.lbl;

std::cout << '\n';

std::cout << "panjang string = ";

std::cout << lb.lenLabel;

std::cout << '\n';

return 0;

}

Bagaimana keluaran program diatas?

Program diatas akan menampilkan:

Hello World

panjang string = 11

Mengapa menjadi begini? Padahal saat instansi, object lb akan mempunyai karakter “Hai Dunia” (sebesar 9 karakter)?

Penjelasannya adalah saat pertama instansi, lb memang mempunyai karakter “Hai Dunia” (sebesar 9 karakter), namun karena kita memanggil fungsi cetak1, dimana dalam fungsi cetak1 keluaran adalah object yang berisi data yang berbeda, maka lb dalam fungsi main juga akan diubah datanya sesuai yang diatur dalam fungsi cetak1().

Tidak ada komentar:

Posting Komentar