Dziwny prototyp funkcji

0
 T* funkcja(int, double const&) const;

Może mi ktoś wyjaśnić co to w ogóle za funkcja?
To jakiś wskaźnik na szablon?
Jeszcze dziwią mnie argumenty "int" bez podania nazwy zmiennej i "&" za typem drugiego argumentu. No i jeszcze ten const poza funkcją.
Prosiłbym o wyrozumiałość :P

5

T to jakiś typ. Gdzieś wcześniej został zdefiniowany. Nie musi być typem szablonowym, choć konwencja tak sugeruje. Może być najprostszy:

typedef int T;

Jeszcze dziwią mnie argumenty "int" bez podania nazwy zmiennej
Bo parametry funkcji nie muszą mieć nazwy jeśli z nich nie korzystasz. W szczególności deklaracje nie muszą podać nazw, wystarczy że definicje będą miały (choć dla czytelności lepiej podać).

"&" za typem drugiego argumentu
Przekazywanie przez referencję: Przekazywanie parametru przez wartość i referencję

No i jeszcze ten const poza funkcją
Stała metoda: http://cpp0x.pl/kursy/Programowanie-obiektowe-C++/Podstawy/Metody-stale/493

0

A jeżeli chciałbym napisać wskaźnik do tak zadeklarowanej funkcji, to byłoby to tak?

T* (*wskaznik)(int, double const&) = funkcja;
2

To jest metoda jakiejś klasy, więc zakładając, że klasa się nazywa Foo:

T* (Foo::*wskaznik)(int, double const&) const = &Foo::funkcja;

albo żeby trochę sobie ułatwić życie:

using Bar = T* (Foo::*)(int, double const&) const;
Bar ptr = &Foo::funkcja; 
2

A po ludzkiemu:

auto bar = &Foo::func;

1 użytkowników online, w tym zalogowanych: 0, gości: 1