C++ – Konsep Overloading Terhadap Fungsi
Overloading
terhadap fungsi atau biasanya disebut Function Overloading, merupakan salah satu kemampuan
dari bahasa pemrograman C++ yang tidak dimiliki oleh bahasa pendahulunya, yaitu
bahasa C yang memungkinkan suatu fungsi dapat menerima bermacam-macam tipe dari
argumen/parameter aktual dan memberikan nilai balik yang sesuai dengan tipe
argumen pemanggilnya, dalam hal ini disebut argumen/parameter aktual.
Jika pada bahasa C, saat ingin
membuat fungsi yang memiliki operasi sama namun dengan tipe data yang
berbeda-beda (missal : int, double) maka yang harus dilakukan adalah membuat
dua buah fungsi yang memiliki nama dan tipe yang berbeda-beda juga. Namun, jika
menggunakan bahasa C++, kita dapat memanfaatkan function overloading sehingga kita
dapat membuat dua buah fungsi yang memiliki nama yang sama tapi dengan tipe argumen
fungsi dan tipe nilai balik yang berbeda. Dengan begini kita tidak lagi dibingungkan dengan mengingat
nama-nama fungsi yang berbeda untuk menandakan
operasi yang sama.
Syntax function overloading pada C++ :
void
pangkat()
{
cout<<"Fungsi pangkat tanpa argumen"<<endl;
cout<<"Tanpa nilai"<<endl;
}
int
pangkat(int x)
{
cout<<"Fungsi pangkat dengan argumen
bertipe data integer"<<endl;
return pow(x,2);
}
double
pangkat( double x)
{
cout<<"Fungsi pangkat dengan argumen
bertipe data double"<<endl;
return pow(x,2);
}
Dapat dilihat bahwa ketiga fungsi
tersebut memiliki nama yang sama (“pangkat”), tapi memiliki tipe data argumen dan
tipe nilai balik yang berbeda. Berikut adalah contoh penggunaan Function
Overloading pada program C++ :
/*
Fungsi
Overloading pada C++
compiler :
Microsoft Visual Studio 2012
*/
#include
<iostream>
using
namespace std;
#include
<conio.h>
#include
<math.h> //pow(arg1, arg2)
//Overloading fungsi pemangkatan
//Fungsi "pangkat" tanpa argumen
void
pangkat()
{
cout<<"Fungsi pangkat tanpa argumen"<<endl;
cout<<"Tanpa nilai"<<endl;
}
//Fungsi "pangkat" dengan argumen bertipe
integer
int
pangkat(int x)
{
cout<<"Fungsi pangkat dengan argumen
bertipe data integer"<<endl;
return pow(x,2);
}
//Fungsi "pangkat" dengan argumen bertipe double
double
pangkat( double x)
{
cout<<"Fungsi pangkat dengan argumen
bertipe data double"<<endl;
return pow(x,2);
}
int main()
{
cout<<"FUNCTION
OVERLOADING"<<endl;
cout<<"--------------------"<<endl;
cout<<pangkat(6.5)<<"\n"<<endl; //pertama
pangkat(); //kedua
cout<<endl;
cout<<pangkat(6)<<"\n"<<endl; //ketiga
_getche();
return EXIT_SUCCESS;
}
Output
FUNCTION OVERLOADING
--------------------
Fungsi pangkat dengan argumen bertipe data double
42.25
Fungsi pangkat tanpa argumen
Tanpa nilai
Fungsi pangkat dengan argumen bertipe data integer
36
Coba cermati output program, yang menarik C++ secara tepat memilih fungsi yang sesuai
dengan tipe argumen aktual/argumen pemanggil.
1. Jika
pemanggilan fungsi menggunakan argumen bertipe double :
“pangkat(6.5);”
Maka C++ akan mengakses fungsi :
double pangkat( double
x)
{
cout<<"Fungsi pangkat dengan argumen
bertipe data double"<<endl;
return pow(x,2);
}
2.
Jika pemanggilan fungsi tanpa menggunakan argumen :
“pangkat();”
Maka secara bijak C++ akan mengakses fungsi :
void pangkat()
{
cout<<"Fungsi pangkat tanpa argumen"<<endl;
cout<<"Tanpa nilai"<<endl;
}
3. Jika
pemanggilan fungsi menggunakan argumen bertipe integer
“pangkat(6);”
Maka C++ akan mengakses fungsi :
int
pangkat(int x)
{
cout<<"Fungsi pangkat dengan argumen bertipe data
integer"<<endl;
return
pow(x,2);
}
Nah, itu tadi tentang Overloading terhadap fungsi.
Tentu ini konsep yang menarik untuk digunakan pada program yang kita buat. Selamat mencoba…
Catatan kecil yang penting :
“Yang digunakan sebagai acuan untuk melakukan overloading pada fungsi adalah tipe data dan jumlah argumen, bukan tipe nilai balik yang ada di depan nama fungsi.“
Baca juga postingan tentang Template pada C++ . Template memiliki kegunaan yang sama dengan konsep overloading pada fungsi, namun dari segi penulisan kode program lebih efektif dan lebih efesien.
[RS]
Klik Like & Share jika postingan ini bermanfaat
Apa tanggapan Anda?
Berikan tanggapan Anda melalui kolom komentar yang telah disediakan.
- Gunakan bahasa yang sopan;
- Saat menjadikan postingan pada blog ini sebagai referensi, jangan lupa mencantumkan sumbernya (link dari blog ini).
Jika blog ini bermanfaat jangan lupa memberikan 'like' atau 'share' untuk mendapatkan update terbaru.
Terima kasih