Professional Documents
Culture Documents
• Đặt vấn đề :
Chúng ta có hàm tính tổng 2 số nguyên:
Như vậy, ta sẽ có nhiều hàm với các tên gọi khác nhau. Tuy nhiên, việc sử dụng tên như vậy sẽ
gây bất lợi cho người lập trình khi gọi hàm. Nạp chồng hàm (function overloading) ra đời để
giải quyết vấn đề trên.
1
1. Nạp chồng hàm trong C ++
• Khái niệm: Nạp chồng hàm (function overloading) là tính năng của ngôn ngữ C++ (không có
trong C). Kỹ thuật này cho phép sử dụng cùng một tên gọi cho nhiều hàm (có cùng mục đích).
Nhưng khác nhau về kiểu dữ liệu tham số hoặc số lượng tham số.
Giải quyết vấn đề trên:
2
1. Nạp chồng hàm trong C ++
3
1. Nạp chồng hàm trong C ++
4
1. Nạp chồng hàm trong C ++
5
1. Nạp chồng hàm trong C ++
6
1. Nạp chồng hàm trong C ++
C++ cho phép nạp chồng hàm với tham số là const chỉ khi tham số const là tham chiếu hoặc con
trỏ. Đó là lý do tại sao chương trình 1 gặp lỗi biên dịch, nhưng chương trình 2 hoạt động.
• Trong chương trình 1, tham số 'i' được truyền theo giá trị, vì vậy 'i' trong fun() là bản sao của 'i'
trong main(). Do đó, fun() không thể sửa đổi 'i' của hàm main(). Vì vậy, không quan trọng việc
'i' được nhận dưới dạng tham số const hay tham số bình thường.
• Khi tham số là tham chiếu hoặc con trỏ, chúng ta có thể sửa đổi giá trị được tham chiếu hoặc
được trỏ tới, do đó chúng ta có thể có hai phiên bản của hàm, một phiên bản có thể sửa đổi giá
trị được tham chiếu hoặc trỏ tới, một phiên bản không thể thay đổi.
7
1. Nạp chồng hàm trong C ++
Hàm với basis khác nhau có thể được gọi bởi hai
object khác nhau.
Ví dụ hai biến t1 gọi hàm fun(), biến const t2 gọi hàm
fun() const.
Ứng dụng khi tạo một hàm có kiểu trả là pointer
hoặc địa chỉ là const, một hàm cũng trả về pointer và
địa chỉ nhưng không phải const.
8
1. Nạp chồng hàm trong C ++
9
Function overloading and return type
• Có thể nạp chồng hàm khi các hàm phải khác nhau về kiểu và số lượng
đối số trong danh sách đối số.
Tuy nhiên, không thể nạp chồng nếu chúng khác
nhau về kiểu trả về .
10
Function overloading and return type
11
Function overloading:
Cung cấp nhiều định nghĩa về function bằng cách thay đổi số lượng tham số, thay đổi kiểu dữ liệu của tham số,…
• Nó có thể được thực hiện trong lớp cơ sở cũng như lớp dẫn xuất.
12
4. Function overloading & Function overriding in C++
Function overriding:
Định nghĩa lại của function lớp cơ sở trong lớp dẫn xuất của nó với cùng kiểu trả về và các tham số.
• Nó chỉ có thể được thực hiện ở trong lớp dẫn xuất.
13
4. Function overloading & Function overriding in C++
Kế thừa Có thể xuất hiện mà không cần kế thừa Xuất hiện khi 1 lớp kế thừa từ lớp khác
Hành vi Function cùng tên hoạt động khác Function của lớp dẫn xuất thực hiện 1
nhau tuỳ vào tham số được truyền cho số công việc được thêm hoặc khác với
chúng function của lớp cơ sở
14