C++ – Konsep Overloading Terhadap Fungsi - nblognlife

C++ – Konsep Overloading Terhadap Fungsi

Contoh Program C++ Overloading Terhadap Fungsi

Apa itu 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