Nạp chồng toán tử và Nạp chồng hàm trong C++
Nạp chồng hàm trong C++
cùng phạm vi (scope), được gọi tương ứng là Nạp chồng hàm (function overloading) và Nạp
chồng toán tử (operator overloading) trong C++.
Một khai báo nạp chồng là một khai báo mà đã được khai báo với cùng tên như một khai báo được khai báo trước đó trong cùng phạm vi, ngoại trừ rằng: cả hai khai báo có các tham số khác nhau và định nghĩa khác nhau.
Khi bạn gọi một hàm nạp chồng hoặc một toán tử nạp chồng, thì compiler quyết định định nghĩa thích hợp nhất để sử dụng bằng việc so sánh các kiểu tham số bạn đã sử dụng để gọi hàm hoặc toán tử với các kiểu tham số đã được xác định trong các định nghĩa. Tiến trình lựa chọn hàm nạp chồng hoặc toán tử nạp chồng thích hợp nhất này được gọi là overload resolution - phân giải
nạp chồng.
Nạp chồng hàm trong C++
Bạn có thể có nhiều định nghĩa cho cùng tên hàm trong cùng phạm vi. Định nghĩa của hàm phải khác lẫn nhau về kiểu và/hoặc số tham số trong danh sách tham số. Bạn không thể nạp chồng các khai báo hàm mà chỉ khác nhau ở kiểu trả về.
Trong ví dụ sau, cùng một hàm print() được sử dụng để in các kiểu dữ liệu khác nhau:
#include <iostream> using namespace std;
class printData {
http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 108 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;
// Call print to print integer
pd.print(5);
// Call print to print float
pd.print(500.263);
// Call print to print character
pd.print("Hello C++");
return 0; }
Khi code trên được biên dịch và thực thi, nó cho kết quả sau:
Printing int: 5
Printing float: 500.263
http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 109
Nạp chồng toán tử trong C++