2012-12-13 31 views
5

Tôi rất tiếc nếu câu hỏi này được báo cáo nhưng dường như tôi không thể tìm thấy giải pháp trực tuyến dễ dàng. Nếu tôi ghi đè toán tử()() thì hành vi này xác định điều gì?Toán tử()() xác định điều gì?

+4

Đó là toán tử gọi hàm. Bạn có thể thấy điều này hữu ích: http://stackoverflow.com/questions/4421706/operator-overloading – chris

Trả lời

8

operator() là toán tử gọi hàm, tức là bạn có thể sử dụng đối tượng thuộc loại tương ứng làm đối tượng hàm. Tập hợp thứ hai của dấu ngoặc đơn chứa danh sách các đối số (như thường lệ) rỗng. Ví dụ:

struct foo { 
    int operator()() { return 17; }; 
}; 

int main() { 
    foo f; 
    return f(); // use object like a function 
} 

Ví dụ trên chỉ cho biết cách người điều khiển được khai báo và gọi. Sử dụng thực tế có thể sẽ truy cập các biến thành viên trong toán tử. Đối tượng hàm được sử dụng ở nhiều nơi trong thư viện C++ chuẩn làm các điểm tùy chỉnh. Ưu điểm của việc sử dụng một đối tượng thay vì một con trỏ hàm là đối tượng hàm có thể có dữ liệu gắn liền với nó.

+0

Thật khó để thấy nó hữu ích như thế nào trong ví dụ của bạn. – dreamlax

+0

@dreamlax: Tôi đã thêm một mô tả ngắn gọn nhưng để giải thích về những đối tượng chức năng nào được sử dụng để bạn tìm kiếm trong các câu trả lời hiện có. –

+0

+1: Thông tin bổ sung tuyệt vời. – dreamlax

Các vấn đề liên quan