So, gimana cara compiler C++ membedakan method tersebut, padahal namanya sama? Compiler C++ memilih fungsi dengan mengamati jumlah, tipe data dan urutan argumen. Nah, dari sini jelas bahwa compiler menggunakan daftar parameter untuk membedakan fungsi dengan nama yang sama. Bukan membedakan dengan return type-nya (nilai balik).
Sehingga, untuk membuat method overloading diperlukan setidaknya satu dari tiga syarat di bawah ini:
- mempunyai jumlah argumen berbeda.
- mempunyai tipe data argumen yang berbeda.
- mempunyai urutan argumen yang berbeda.
Contoh #1 (jumlah argumen berbeda):
// method kali dengan dua argumen (bil1 dan bil2)
int kali(int bil1, int bil2) {
return bil1*bil2
}
// method kali dengan tiga argumen (bil1, bil2 dan bil3)
int kali(int bil1, int bil2, int bil3) {
return bil1*bil2*bil3;
}
Method kali pada contoh di atas VALID karena mempunyai jumlah argumen yang berbeda.
Contoh #2 (mempunyai tipe data argumen yang berbeda):
// method tampilkanNilai mempunyai argumen bertipe char
void tampilkanNilai(char nilai) {
cout << “Nilai (dalam huruf): ” << nilai;
}
// method tampilkanNilai mempunyai argumen bertipe int
void tampilkanNilai(int nilai) {
cout << “Nilai (dalam angka): ” << nilai;
}
Contoh method tampilkanNilai diatas VALID karena mempunyai tipe data argumen yang berbeda walaupun memiliki jumlah argumen yang sama.
Contoh #3 (urutan argumen berbeda):
// method kali dengan tipe data bil1 adalah int
// dan bil2 adalah double
double kali(int bil1, double bil2) {
return bil1*bil2;
}
// method kali dengan tipe data bil1 adalah double
// dan bil2 adalah int
double kali(double bil1, int bil2) {
return bil1*bil2;
}
Method kali di atas VALID karena urutan argumen berbeda. Pada method kali yang pertama bil1 bertipe data int kemudian diikuti oleh bil2 dengan tipe data double. Sedangkan pada method kali yang kedua, bil1 bertipe data double diikuti oleh bil2 yang bertipe data int.
PERLU DIINGAT!!!
Seringnya programmer melakukan kesalahan ketika membuat method overloading adalah dengan membuat daftar parameter yang sama dengan return type (nilai balik) yang berbeda. Hal ini menghasilkan SYNTAX ERROR.
Contoh yang salah:
// return type: int
int hitungUmur(int umur)
{
return umur + 2;
}
// return type: void
void hitungUmur(int umur)
{
cout<<”umur siswa setelah lulus kuliah= “<<umur+2;
}
SYNTAX ERROR. Method tidak dapat di-overload karena mempunyai jumlah argumen yang sama dengan tipe data yang sama.
Semoga bermanfaat… :)
Random Posts
Loading…
Tags: C++, Method, Overloading













November 12th, 2008 at 5:22 pm
Artikel yang bagus nih,
Method overloading ga bisa hanya dengan membedakan return tipe tetapi parameter sama persis, karena ketika kita memanggil sebuah method, seperti ini :
hitungUmur(10);
kita melewatkan parameter ke method, nah kalo parameter ke dua method sama persis, compiler kan bakalan bingung mo manggil method yang mana??. Maka nya compiler nya bilang “SYNTAX ERROR”.
November 13th, 2008 at 9:37 am
Bukan cuma manusia yang bisa bingung ya ky, compiler juga.. namanya juga buatan manusia.. hehehe.. btw, jadi inget mata kuliah OOP ya..