Hãy cho biết hàm overloaded là gì?


Hỏi ĐápLà gì

1. Nạp chồng hàm (function overloading) là gì?

Trong C++, 2 hàm có thể trùng tên với nhau nếu danh sách tham số của hàm là khác nhau. Có thể khác nhau về số lượng tham số hoặc kiểu dữ liệu của tham số.

Những hàm có cùng tên nhưng khác danh sách tham số thì gọi là nạp chồng hàm.

Ví dụ:

// các hàm trùng tên nhưng khác danh sách tham số int test() { } int test(int a) { } float test(double a) { } int test(int a, double b) { }

Lưu ý: Kiểu trả về của các hàm nạp chồng có thể giống hoặc khác nhau cũng được. Nhưng danh sách tham số phải là khác nhau.

Ví dụ bên dưới sẽ là khai báo hàm nạp chồng lỗi vì tham số giống nhau (mặc dù hàm khác kiểu trả về).

// Error code int test(int a) { } double test(int b){ }

2. Một số ví dụ về nạp chồng hàm

Chương trình C++ minh họa nạp chồng hàm với kiểu dữ liệu của tham số khác nhau

// Program to compute absolute value // Works for both int and float #include <iostream> using namespace std; // function with float type parameter float absolute(float var){ if (var < 0.0) var = -var; return var; } // function with int type parameter int absolute(int var) { if (var < 0) var = -var; return var; } int main() { // call function with int type parameter cout << "Absolute value of -5 = " << absolute(-5) << endl; // call function with float type parameter cout << "Absolute value of -5.5 = " << absolute(-5.5f) << endl; system("pause"); }
Kết quả
Absolute value of -5 = 5 Absolute value of -5.5 = 5.5
function overloading using different types of parameters

Chương trình C++ minh họa nạp chồng hàm với số lượng tham số khác nhau

#include <iostream> using namespace std; // function with 2 parameters void display(int var1, double var2) { cout << "Integer number: " << var1; cout << " and double number: " << var2 << endl; } // function with double type single parameter void display(double var) { cout << "Double number: " << var << endl; } // function with int type single parameter void display(int var) { cout << "Integer number: " << var << endl; } int main() { int a = 5; double b = 5.5; // call function with int type parameter display(a); // call function with double type parameter display(b); // call function with 2 parameters display(a, b); system("pause"); }
Kết quả
Integer number: 5 Float number: 5.5 Integer number: 5 and double number: 5.5
function overloading using different parameter number

Các bạn không nên sử dụng quá nhiều nạp chồng hàm để tránh bị nhầm lẫn chức năng giữa các hàm nhé!

  • 6 bước xây dựng một chương trình máy tính
  • Hàm bạn (friend function) trong lập trình hướng đối tượng với C++
  • Nạp chồng toán tử (operator overloading) trong C++
  • Các thao tác cơ bản trên cây nhị phân (Binary Tree)
  • Hàm thuần ảo (pure virtual function) và lớp trừu tượng (abstract class) trong C++
Mời bạn đánh giá bài viết
Chia sẻ trên mạng xã hội:
C/C++ programming