Toán tử gọi hàm – Function invocation operator
Toán tử | () |
Có thể được thực hiện như là một hàm toàn cục không ? | Không |
Có thể được thực hiện như là một hàm thành việc của lớp không ? | Có |
Kiểu dữ liệu trả về | Bất kỳ kiểu gì |
Toán tử gọi hàm có một số đặc điểm sau:
- Số lượng các tham số của nó không được xác định trước
- Kiểu trả về không được xác định trước
- Một lớp có thể có nhiều nạp chồng cho toán tử ‘()’; có thể định nghĩa nhiều nếu cần nhưng nên nhớ: hãy giữ cho chúng có thể phân biệt với nhau bằng số lượng và kiểu dữ liệu của các tham số
Chương trình ví dụ →
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <iostream> using namespace std; class Fun { public: int operator() (int a1, int a2) { return a1 > a2 ? a1 : a2; } int operator() (int a1, int a2, int a3) { return a1 > a2 ? (a1 > a3 ? a1 : a3) : (a2 > a3 ? a2 : a3); } }; int main(void) { Fun f; cout << f(1,2) << endl; cout << f(1,2,3) << endl; return 0; } |
cho thấy một lớp nó nạp chồng toán tử ‘()’ hai lần và tạo ra hai hàm để tìm kiếm số lớn nhất trong đối số của chúng.
Chương trình in ra như sau:
1 2 |
2 3 |