Overloading Fungsi C++: Panduan Praktis
Overloading Fungsi C++
Temukan bagaimana C++ memungkinkan Anda mendefinisikan beberapa fungsi dengan nama yang sama tetapi tanda tangan yang berbeda, diilustrasikan dengan contoh praktis.
Dalam C++, dua fungsi dapat berbagi nama yang sama selama daftar parameternya berbeda dalam tipe, jumlah, atau urutan. Varian-varian ini disebut fungsi yang di-overload.
Contohnya:
// Same name, different arguments int test() { } int test(int a) { } float test(double a) { } int test(int a, double b) { }
Empat deklarasi di atas mewakili himpunan overload yang valid. Perhatikan bahwa tipe pengembalian tidak relevan untuk resolusi overload; hanya daftar parameter yang penting. Contohnya:
// Compilation error: identical signatures int test(int a) { } double test(int b){ }
Di sini, kedua fungsi memiliki nama yang sama, tipe yang sama, dan jumlah argumen yang sama, sehingga kompiler menolak duplikat.
Contoh 1: Overloading dengan Berbagai Tipe Parameter
// Compute absolute value for int and float #include <iostream> using namespace std; // float version float absolute(float var){ return (var < 0.0f) ? -var : var; } // int version int absolute(int var){ return (var < 0) ? -var : var; } int main(){ cout << "Absolute value of -5 = " << absolute(-5) << endl; cout << "Absolute value of 5.5 = " << absolute(5.5f) << endl; return 0; }
Output
Absolute value of -5 = 5 Absolute value of 5.5 = 5.5
Program ini overload absolute(); kompiler memilih versi yang sesuai berdasarkan tipe argumen.
Contoh 2: Overloading dengan Berbagai Jumlah Parameter
#include <iostream> using namespace std; // Two-parameter version void display(int var1, double var2){ cout << "Integer: " << var1; cout << " & Double: " << var2 << endl; } // Single double parameter void display(double var){ cout << "Double: " << var << endl; } // Single int parameter void display(int var){ cout << "Integer: " << var << endl; } int main(){ int a = 5; double b = 5.5; display(a); display(b); display(a, b); return 0; }
Output
Integer: 5 Double: 5.5 Integer: 5 & Double: 5.5
Pemanggilan ke display() diselesaikan ke overload yang benar berdasarkan jumlah dan tipe argumen.
Catatan: Fungsi pustaka standar seperti sqrt() sangat di-overload, menerima int, float, double, dan lebih banyak, memberikan fleksibilitas kepada pengembang.