function definition
Főnév
function definition (tsz. function definitions)
A C++ nyelvben a függvénydefiníció (function definition) azt jelenti, hogy egy függvény működését részletesen megadjuk. Ez magában foglalja: - a visszatérési típust, - a függvény nevét, - a paramétereket, - a függvény törzsét (a végrehajtandó utasításokat).
1. A függvények alapjai
Egy függvény szintaxisa a következő:
visszatérési_típus függvénynév(paraméterlista) {
// Függvénytörzs: a végrehajtandó utasítások
return érték; // (ha van visszatérési érték)
}
Példa egy egyszerű függvényre:
#include <iostream>
// Függvénydefiníció
int osszead(int a, int b) {
return a + b; // Két szám összeadása
}
int main() {
int eredmeny = osszead(5, 7);
std::cout << "Az összeg: " << eredmeny << std::endl;
return 0;
}
📌 Magyarázat: - int osszead(int a, int b): A függvény neve osszead, és két int típusú paramétert vár. - return a + b;: A függvény visszaadja a két szám összegét. - A main() függvény hívja meg az osszead() függvényt, és kiírja az eredményt.
2. Függvénydeklaráció és definíció különválasztása
A C++ programokban gyakran különválasztjuk a függvénydeklarációt és a függvénydefiníciót. A deklaráció (function declaration vagy function prototype) megmondja a fordítónak, hogy milyen függvény létezik, míg a definíció (function definition) a tényleges működést tartalmazza.
📌 Példa:
#include <iostream>
// Függvénydeklaráció (csak a fejléce)
int osszead(int, int);
int main() {
std::cout << "Az összeg: " << osszead(10, 20) << std::endl;
return 0;
}
// Függvénydefiníció (a részletes működés)
int osszead(int a, int b) {
return a + b;
}
🔹 Miért jó így? - Jobban szervezhető a kód. - A deklarációkat el lehet helyezni egy külön fejlécfájlban (.h), a definíciókat pedig egy külön forrásfájlban (.cpp). - Segít az olvashatóságban és a moduláris programozásban.
3. Függvények paraméterei
A függvények különböző módokon fogadhatnak paramétereket:
a) Érték szerinti átadás (pass by value)
A paraméterek másolásra kerülnek, így a függvény nem módosítja az eredeti változókat.
void novel(int szam) {
szam++; // Ez csak a másolt értéket módosítja, nem az eredetit
}
int main() {
int x = 10;
novel(x);
std::cout << x; // 10, mert az eredeti változó nem változik
}
b) Referencia szerinti átadás (pass by reference)
A paraméterre hivatkozásként (reference) mutatunk, így a függvény módosíthatja az eredeti változót.
void novel(int &szam) {
szam++; // Az eredeti változó értéke is nő
}
int main() {
int x = 10;
novel(x);
std::cout << x; // 11, mert a függvény módosította az eredeti értéket
}
c) Konstans referencia (const reference)
Ha egy paramétert referenciaként szeretnénk átadni, de nem akarjuk módosítani, használjunk const-ot.
void kiir(const std::string &szoveg) {
std::cout << szoveg << std::endl;
}
🔹 Miért jó?
- Nagy objektumok (pl. stringek) másolását elkerüli, így gyorsabb.
- Garantálja, hogy a függvény nem módosítja az eredeti adatot.
4. Alapértelmezett paraméterek
Lehetőség van alapértelmezett értékeket adni a paramétereknek. Ha a hívás során egy paraméter nincs megadva, akkor az alapértelmezett értéket használja.
#include <iostream>
// Függvénydeklaráció alapértelmezett paraméterrel
void koszont(std::string nev = "Világ") {
std::cout << "Hello, " << nev << "!" << std::endl;
}
int main() {
koszont(); // "Hello, Világ!"
koszont("Anna"); // "Hello, Anna!"
return 0;
}
5. Változó számú paraméterek (variadic functions)
Ha egy függvénynek nem ismert számú paramétere van, használhatunk variadic függvényeket a ... operátorral és az initializer_list vagy va_list segítségével.
#include <iostream>
#include <cstdarg>
// Variadic függvény
int osszeg(int db, ...) {
va_list args;
va_start(args, db);
int sum = 0;
for (int i = 0; i < db; i++) {
sum += va_arg(args, int);
}
va_end(args);
return sum;
}
int main() {
std::cout << osszeg(3, 1, 2, 3) << std::endl; // 6
}
🔹 C++11-től érdemes helyette initializer_list-et használni:
#include <iostream>
#include <initializer_list>
int osszeg(std::initializer_list<int> szamok) {
int sum = 0;
for (int szam : szamok) {
sum += szam;
}
return sum;
}
int main() {
std::cout << osszeg({1, 2, 3, 4, 5}) << std::endl; // 15
}
Összegzés
A C++ függvények lehetővé teszik a programok modularitását és újrafelhasználhatóságát.
✅ Fontos koncepciók: - Függvénydeklaráció vs. definíció - Érték és referencia szerinti paraméterátadás - Konstans referenciák (const reference) - Alapértelmezett paraméterek - Változó számú paraméterek (variadic functions)
- function definition - Szótár.net (en-hu)
- function definition - Sztaki (en-hu)
- function definition - Merriam–Webster
- function definition - Cambridge
- function definition - WordNet
- function definition - Яндекс (en-ru)
- function definition - Google (en-hu)
- function definition - Wikidata
- function definition - Wikipédia (angol)