Witam, mam pewien dylemat. Czytam aktualnie książkę Jerzego Grębosza Symfonia c++ i jestem w rozdziale o wskaźnikach do funkcji i tu taki wskaźnik wygląda np tak: int(*wskaz_fun)(); A jak wyszukałem w internecie o tych wskaźnikach to są tam wskaźniki
np. typedef void (foo)(void,int);, i nie rozumiem o co tu chodzi z tym typedef'em. Wytłumaczy mi ktoś o co tu chodzi?
PS. Z góry dzięki. :D
0
2
typedef
pozwala zdefiniować typ, żeby później wygodnie użyć. Wyobraź sobie, że masz funkcję, która zwraca int
i przyjmuje char
jako parametr.
Może wyglądać np. tak:
int foo(char c) {}
Teraz jak chcesz mieć wskaźniki do takiej funkcji, to za każdym razem piszesz:
int (*funwsk1)(char) = foo;
int (*funwsk2)(char) = foo;
Nie jest to zbyt wygodne, szczególnie jak sygnatura funkcji może być dużo bardziej skomplikowana. Z typedef
musisz to robić tylko raz:
typedef int (*funwsk)(char);
funwsk bar1 = foo;
funwsk bar2 = foo;
funwsk bar1000 = foo;
0
Można użyć std::function który jest bardziej czytelny (ale trochę wolniejszy) niż zwykłe wskaźniki.
http://en.cppreference.com/w/cpp/utility/functional/function
0
A to po kolei te rozdziały czytasz? W rozdziale o typach (3.12, 73str) jest to opisane. Wydanie 3 rozszerzone