C++ cho phép nạp chồng hàm thành viên dựa trên const của đối tượng (this).
Overload theo const của đối tượng
class MyClass {
public:
void func() { cout << "Normal\n"; }
void func() const { cout << "Const\n"; }
};
MyClass obj; obj.func(); // gọi non-const
const MyClass cobj; cobj.func(); // gọi constKết quả
Normal Const
Overload theo const của tham số (chỉ hoạt động với con trỏ/tham chiếu)
void func(int* p) { cout << "non-const ptr\n"; }
void func(const int* p) { cout << "const ptr\n"; }Với tham số truyền giá trị (int vs const int) thì không nạp chồng được (biên dịch lỗi).