Khái niệm về con trỏ đến hàm trong C++
**Con trỏ đến hàm** (function pointer) trong C++ là một biến chứa địa chỉ của một hàm. Nó cho phép bạn gọi hàm thông qua con trỏ, truyền con trỏ hàm như một tham số cho các hàm khác, hoặc lưu trữ nhiều hàm khác nhau trong cùng một biến.
### Cách hoạt động của con trỏ đến hàm
1. **Khai báo con trỏ đến hàm**: Bạn cần xác định kiểu trả về và kiểu tham số của hàm mà con trỏ sẽ trỏ đến.
2. **Gán địa chỉ của hàm cho con trỏ**: Sử dụng toán tử `&` hoặc tên hàm (không cần `&`) để gán địa chỉ.
3. **Gọi hàm thông qua con trỏ**: Sử dụng cú pháp giống như gọi hàm bình thường, nhưng với con trỏ.
### Ví dụ minh họa
Dưới đây là ví dụ về cách sử dụng con trỏ đến hàm trong C++:
```cpp
#include <iostream>
using namespace std;
// Hàm để tính tổng
int add(int a, int b) {
return a + b;
}
// Hàm để tính hiệu
int subtract(int a, int b) {
return a - b;
}
int main() {
// Khai báo con trỏ đến hàm
int (*operation)(int, int);
// Gán địa chỉ của hàm add cho con trỏ
operation = &add;
cout << "Tổng: " << operation(5, 3) << endl; // Gọi hàm add thông qua con trỏ
// Gán địa chỉ của hàm subtract cho con trỏ
operation = &subtract;
cout << "Hiệu: " << operation(5, 3) << endl; // Gọi hàm subtract thông qua con trỏ
return 0;
}
```