Bạn có thể có nhiều định nghĩa cho cùng một tên hàm trong cùng một phạm vi. Định nghĩa của hàm phải khác nhau theo kiểu và / hoặc số lượng đối số trong danh sách đối số. Bạn không thể nạp chồng các khai báo hàm chỉ khác nhau theo kiểu trả về.
Quá tải hàm về cơ bản là đa hình thời gian biên dịch. Nó kiểm tra chữ ký chức năng. Nếu các chữ ký không giống nhau, thì chúng có thể bị quá tải. Kiểu trả về của một hàm không tạo ra bất kỳ ảnh hưởng nào đến việc nạp chồng hàm. Chữ ký hàm giống nhau với kiểu trả về khác nhau sẽ không bị quá tải.
Sau đây là ví dụ trong đó cùng một hàm print () đang được sử dụng để in các kiểu dữ liệu khác nhau
Mã mẫu
#include <iostream> using namespace std; class printData { public: void print(int i) { cout << "Printing int: " << i << endl; } void print(double f) { cout << "Printing float: " << f << endl; } void print(char* c) { cout << "Printing character: " << c << endl; } }; int main(void) { printData pd; pd.print(5); // Call print to print integer pd.print(500.263); // Call print to print float pd.print("Hello C++"); // Call print to print character return 0; }
Đầu ra
Printing int: 5 Printing float: 500.263 Printing character: Hello C++