Junior
185
Може ли в C++ да се обяви указател към функция?
Отговор от AI
sobes.tech AI
Да.
// Определяне на указател към функция, която приема два int и връща int
int (*ptr_to_ADD)(int, int);
// Пример за функция, която съответства на сигнатурата
int ADD(int a, int b) {
return a + b;
}
// Присвояване на адреса на функцията към указателя
ptr_to_ADD = &ADD;
// Викаме функцията чрез указателя
int резултат = ptr_to_ADD(5, 3); // резултат ще бъде 8
Също така с използване на псевдоними на типове (typedef) или using:
// Използване на typedef
typedef int (*OperationFunc)(int, int);
OperationFunc ptr_to_sub;
int SUB(int a, int b) {
return a - b;
}
ptr_to_sub = ⊂
int резултат_sub = ptr_to_sub(10, 4); // резултат ще бъде 6
// Използване на using (C++11 и по-нови)
using OperationFunc2 = int (*)(int, int);
OperationFunc2 ptr_to_mul;
int MUL(int a, int b) {
return a * b;
}
ptr_to_mul = &MUL;
int резултат_mul = ptr_to_mul(2, 7); // резултат ще бъде 14
Указатели към функции могат да се използват като аргументи на функции (callback-и) или като стойности за връщане.