Учитывая следующие два typedef
s:
typedef void (*pftype)(int);
typedef void ftype(int);
Я понимаю, что первый определяет pftype
как указатель на функцию, которая принимает один параметр int
и ничего не возвращает, а вторая определяет ftype
как тип функции, который принимает один параметр int
и ничего не возвращает, Однако я не понимаю, для чего может быть использован второй.
Я могу создать функцию, соответствующую этим типам:
void thefunc(int arg)
{
cout << "called with " << arg << endl;
}
а затем я могу создать указатели на эту функцию, используя каждый:
int main(int argc, char* argv[])
{
pftype pointer_one = thefunc;
ftype *pointer_two = thefunc;
pointer_one(1);
pointer_two(2);
}
При использовании типа функции я должен указать, что я создаю указатель. Используя тип указателя функции, я этого не делаю. Либо можно использовать взаимозаменяемо как тип параметра:
void run_a_thing_1(ftype pf)
{
pf(11);
}
void run_a_thing_2(pftype pf)
{
pf(12);
}
Какое использование, следовательно, является типом функции? Не подходит ли тип указателя функции к случаям и удобнее?