3.8.2 Cơ chế hoạt động của nạp chồng hàm (1)

Cơ chế cho phép chúng ta có nhiều hàm cùng một tên nhất định được gọi là nạp chồng hàm (hay còn gọi là overload).
Có một, giới hạn quan trọng: tất cả các hàm nạp chồng phải được phân biệt rõ ràng với trình biên dịch.

Ví dụ: nếu lời gọi hàm max (ở trang trước) có ba tham số thực tế, biến thể thứ hai của hàm max được chọn. Nếu có hai tham số, trình biên dịch sử dụng biến thể đầu tiên. Bất kỳ biến thể khác của lời gọi đó được coi là lỗi.

Trình biên dịch sẽ xử lý như thế nào để chọn hàm cần gọi tương ứng với lời gọi hàm ?

  • Số lượng các tham số: ví dụ, nếu có ba hàm nạp chồng với (tương ứng) hai, ba và bốn tham số, và lời gọi chỉ định hai tham số → hàm có hai thám số sẽ là ứng cử viên hợp lý nhất và có thể nó sẽ được gọi
  • Kiểu dữ liệu của các tham số: nếu có nhiều hàm với cùng số lượng tham số, hàm được gọi sẽ được lựa chọn dựa trên sự phù hợp của các tham số

Lưu ý: kiểu trả về không được xem xét khi trình biên dịch tìm kiếm ứng viên tốt nhất cho một lời gọi hàm. Tức là, hai hàm mà chỉ khác biệt trong kiểu trả về là không thể phân biệt được với trình biên dịch. Điều này có nghĩa là đoạn mã dưới đây sai: