Nạp chồng hàm trong C ++ (Có ví dụ)

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về nạp chồng hàm trong C ++ với các ví dụ.

Trong C ++, hai hàm có thể có cùng tên nếu số lượng và / hoặc kiểu đối số được truyền khác nhau.

Các hàm này có cùng tên nhưng các đối số khác nhau được gọi là các hàm nạp chồng. Ví dụ:

 // same name different arguments int test() ( ) int test(int a) ( ) float test(double a) ( ) int test(int a, double b) ( )

Ở đây, cả 4 hàm đều là hàm quá tải.

Chú ý rằng kiểu trả về của cả 4 hàm này không giống nhau. Các hàm bị quá tải có thể có hoặc không có các kiểu trả về khác nhau nhưng chúng phải có các đối số khác nhau. Ví dụ,

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

Ở đây, cả hai hàm đều có cùng tên, cùng kiểu và cùng số lượng đối số. Do đó, trình biên dịch sẽ xuất hiện một lỗi.

Nạp chồng hàm bằng các loại tham số khác nhau

 // Program to compute absolute value // Works for both int and float #include 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; return 0; )

Đầu ra

 Giá trị tuyệt đối của -5 = 5 Giá trị tuyệt đối của 5,5 = 5,5
Làm việc quá tải cho hàm tuyệt đối ()

Trong chương trình này, chúng tôi nạp chồng absolute()hàm. Dựa trên kiểu tham số được truyền trong khi gọi hàm, hàm tương ứng được gọi.

Nạp chồng hàm bằng số lượng tham số khác nhau

 #include 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); return 0; )

Đầu ra

 Số nguyên: 5 Số thực: 5,5 Số nguyên: 5 và số kép: 5,5

Ở đây, display()hàm được gọi ba lần với các đối số khác nhau. Tùy thuộc vào số lượng và kiểu đối số được truyền vào, display()hàm tương ứng được gọi.

Làm việc quá tải cho hàm display ()

Kiểu trả về của tất cả các hàm này là giống nhau nhưng không cần thiết cho trường hợp quá tải hàm.

Lưu ý: Trong C ++, nhiều hàm thư viện chuẩn bị quá tải. Ví dụ, các sqrt()chức năng có thể mất double, float, int,vv như các thông số. Điều này có thể thực hiện được vì sqrt()hàm đã được nạp chồng trong C ++.

thú vị bài viết...