Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Các hàm không thể nạp chồng (overload) trong C++


Nạp chồng hàm (function overloading) là tính năng của đa hình (polymorphism) trong lập trình hướng đối tượng.

Để nạp chồng, các hàm phải:

  • Cùng tên hàm
  • Cùng kiểu trả về
  • Tham số khác kiểu hoặc khác số lượng

Ví dụ

int hienThi(int a); 
int hienThi(float a); // Có thể nạp chồng
int hienThi(int a); 
float hienThi(float b); // KHÔNG thể nạp chồng (khác kiểu trả về)

Các trường hợp KHÔNG thể nạp chồng

1. Hàm khác tên và khác số tham số

int max_hai(int a, int b);     // 2 tham số
int max_ba(int a, int b, int c); // 3 tham số - KHÔNG nạp chồng được (khác tên)

2. Cùng tên nhưng khác kiểu trả về

int max_hai(int a, int b) { ... }
float max_hai(int a, int b) { ... } // LỖI: nạp chồng không được

3. Hàm thành viên static và non-static cùng tên, cùng tham số

class KiemTra {
    static void test(int i) { }
    void test(int i) { } // LỖI: static không nạp chồng với non-static
};

4. Chỉ khác nhau ở tham số mặc định (default argument)

int ham(int a, int b) { return a*b; }
int ham(int a, int b = 40) { return a+b; } // LỖI: coi như khai báo trùng

Lưu ý: Nạp chồng dựa vào chữ ký hàm (tên + danh sách tham số), không phụ thuộc vào kiểu trả về.