szó jelentését keresi. A DICTIOUS-ban nem csak a
szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a
szót egyes és többes számban mondani. Minden, amit a
szóról tudni kell, itt található. A
szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. A
és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.
Főnév
function signature (tsz. function signatures)
- (informatika) A function signature (függvény szignatúra) a programozásban egy formális leírása annak, hogyan lehet egy adott függvényt hívni. Ez az információ tartalmazza a függvény nevét, a paraméterek számát, típusát és sorrendjét, valamint sok esetben a visszatérési érték típusát is. A function signature nem feltétlenül tartalmazza a függvény implementációját – csak annak “nyilvános arcát”.
🧠 Mi tartozik egy function signature-be?
1. Függvény neve
Ez az a név, amellyel a függvényt hívhatjuk. Pl.:
int osszeg(int a, int b); // a név: osszeg
2. Paraméterlista
Ez a rész írja le:
- hány bemeneti paramétere van a függvénynek,
- azok milyen típusúak,
- milyen sorrendben vannak.
Példa:
float szoroz(float x, float y); // két paraméter: float x, float y
A paraméter neve nem mindig szükséges a szignatúrában, csak a típusa.
3. Visszatérési érték típusa
Ez azt mondja meg, hogy a függvény milyen típusú értéket ad vissza:
double negyzet(double x); // visszatérési típus: double
🧩 Példák különféle nyelveken
C++
- Név:
add
- Paraméterek:
int, int
- Visszatérési típus:
int
Python
def add(a: int, b: int) -> int:
- A függvény neve
add
- Típusannotációval adott paraméterek
-> int
a visszatérési típus
Java
public int add(int a, int b)
- Visszatérési típus:
int
- Név:
add
- Paraméterek:
int, int
- Láthatóság:
public
🤔 Mi nem része a function signature-nek?
- A függvénytörzs, azaz a kód, ami végrehajtódik
- Kommentek, dokumentációk
- A paraméterek neve (egyes nyelvekben)
- A változók módosítása a törzsben
🔀 Függvény túlterhelés (overloading) és signature
A függvény túlterhelés azt jelenti, hogy több azonos nevű függvény létezhet, amennyiben eltér a szignatúrájuk.
C++ példa:
int f(int a);
double f(double a);
Mindkettő f
nevű függvény, de más a paraméterlistájuk – így eltérő a signature.
🧱 Miért fontos a function signature?
- Fordításkor a nyelv meg tudja különböztetni a különböző függvényeket.
- Dokumentációként szolgál más programozóknak.
- Interfészek vagy API-k leírásának alapja.
- Kódgenerálásnál, fordító optimalizációban használják.
- Linting és statikus elemzők ellenőrzik a signature alapján a típushelyességet.
🎯 Speciális esetek
Default paraméterek
void kiir(string s = "Hello");
A default érték nem része a signature-nek C++-ban. Tehát:
void f(int a); // OK
void f(int a = 10); // is ugyanaz a signature → nem túlterhelés
Variadic függvények
int printf(const char* format, ...);
Az ilyen szignatúra azt jelzi, hogy tetszőleges számú argumentum adható meg – a signature ettől még csak a const char*
paramétert tartalmazza.
⚙️ Function pointer és signature
C++ például:
int f(int, int);
int (*fp)(int, int) = &f;
A function pointer típusa a signature-n alapul: int (int, int)
.
🧩 Típusok és overload resolution
Overload resolution (túlterhelés kiválasztása) csak a signature alapján történik. Például:
void f(int);
void f(double);
Híváskor:
f(5); // int → első verzió
f(5.5); // double → második verzió
📚 Signature és ABI (Application Binary Interface)
A signature fontos az ABI kompatibilitás miatt is: ha megváltozik a signature (pl. új paraméter), akkor a hívókód újrafordítása szükséges.
🏷️ Template-ek és signature
C++ templatenél:
template<typename T>
T add(T a, T b);
A signature itt generikus, és a típushelyettesítés során konkrét típusokra bővül:
int add(int, int)
double add(double, double)
Mindegyik más-más signature a generált kódban.
📌 Összefoglaló
A function signature:
- meghatározza, hogyan lehet egy függvényt hívni,
- elengedhetetlen a típusellenőrzéshez és függvénytúlterheléshez,
- többnyire tartalmazza a nevet, paraméterlistát, és visszatérési típust,
- nem tartalmaz implementációt vagy default értékeket,
- használják dokumentációban, interfészeknél, és fordítási ellenőrzésnél.