header
FĆnĂ©v
header (tsz. headers)
- header - SzĂłtĂĄr.net (en-hu)
- header - Sztaki (en-hu)
- header - MerriamâWebster
- header - Cambridge
- header - WordNet
- header - ĐŻĐœĐŽĐ”ĐșŃ (en-ru)
- header - Google (en-hu)
- header - Wikidata
- header - Wikipédia (angol)
A fejlĂ©cek (header files) a C++ programozĂĄs alapvetĆ Ă©pĂtĆelemei, amelyek segĂtenek a kĂłd modularizĂĄlĂĄsĂĄban Ă©s ĂșjrafelhasznĂĄlhatĂłsĂĄgĂĄban. Egy fejlĂ©cfĂĄjl ĂĄltalĂĄban fĂŒggvĂ©nyek, osztĂĄlyok, vĂĄltozĂłk Ă©s makrĂłk deklarĂĄciĂłit tartalmazza, amelyeket mĂĄs forrĂĄsfĂĄjlok (.cpp) hasznĂĄlhatnak.
1. Miért hasznåljunk fejlécfåjlokat?
â
KĂłd ĂșjrafelhasznĂĄlĂĄsa â A deklarĂĄciĂłkat több fĂĄjlban is felhasznĂĄlhatjuk.
â
ModularitĂĄs Ă©s tisztĂĄbb kĂłd â A fejlĂ©cfĂĄjlok elkĂŒlönĂtik a deklarĂĄciĂłkat a definĂciĂłktĂłl.
â
FordĂtĂĄsi sebessĂ©g optimalizĂĄlĂĄsa â Csak a szĂŒksĂ©ges kĂłdrĂ©szleteket importĂĄljuk.
â
Jobb csapatmunka â Több fejlesztĆ is dolgozhat kĂŒlönbözĆ modulokon egyszerre.
2. Fejlécek importålåsa: #include
A C++-ban a #include direktĂva segĂtsĂ©gĂ©vel importĂĄlhatunk fejlĂ©cfĂĄjlokat:
#include <iostream> // Standard könyvtåri fejléc
#include "sajat_fejlec.h" // Sajåt fejléc
đč Szintaktika kĂŒlönbsĂ©gei:
- <...>: A szabvånyos könyvtårból (iostream, vector, stb.) importål.
- "...": Egyedi (sajåt) fejlécfåjl importålåsa a projekt mappåjåból.
3. Sajåt fejlécfåjl (.h) létrehozåsa
Egy fejlĂ©cfĂĄjl (.h) ĂĄltalĂĄban deklarĂĄciĂłkat tartalmaz, mĂg a kapcsolĂłdĂł forrĂĄsfĂĄjl (.cpp) a megvalĂłsĂtĂĄst.
đ PĂ©lda: LĂ©trehozunk egy math_utils.h fejlĂ©cfĂĄjlt
#ifndef MATH_UTILS_H // Include guard
#define MATH_UTILS_H
int osszead(int a, int b); // FĂŒggvĂ©ny deklarĂĄciĂł
double hatvany(double base, int exp);
#endif
đ A math_utils.cpp forrĂĄsfĂĄjl, ahol a fĂŒggvĂ©nyek megvalĂłsĂtĂĄsa törtĂ©nik
#include "math_utils.h"
#include <cmath> // Matematikai mƱveletekhez
int osszead(int a, int b) {
return a + b;
}
double hatvany(double base, int exp) {
return std::pow(base, exp);
}
đ A main.cpp fĂĄjl, ahol hasznĂĄljuk a fejlĂ©ceket
#include <iostream>
#include "math_utils.h"
int main() {
std::cout << "2 + 3 = " << osszead(2, 3) << std::endl;
std::cout << "2^3 = " << hatvany(2, 3) << std::endl;
return 0;
}
đč MiĂ©rt jĂł Ăgy?
- A math_utils.h fejlĂ©c több fĂĄjlban is hasznĂĄlhatĂł, anĂ©lkĂŒl hogy a fĂŒggvĂ©nyeket Ășjra kellene Ărni.
- A math_utils.cpp csak a fejlĂ©cben lĂ©vĆ deklarĂĄciĂłkat hasznĂĄlja, Ăgy a kĂłd ĂĄttekinthetĆbb Ă©s könnyebben karbantarthatĂł.
4. Include Guard â #ifndef, #define, #endif
Ha egy fejlĂ©cet többször importĂĄlunk, többszörös definĂciĂłs hiba lĂ©phet fel. Ennek elkerĂŒlĂ©sĂ©re include guardokat hasznĂĄlunk.
#ifndef MY_HEADER_H // Ha még nincs definiålva
#define MY_HEADER_H // DefiniĂĄljuk
// DeklarĂĄciĂłk ide kerĂŒlnek
#endif // MY_HEADER_H
â MegakadĂĄlyozza, hogy a fĂĄjl többször legyen beillesztve egyetlen fordĂtĂĄsi egysĂ©gben.
AlternatĂv megoldĂĄs:
C++11 óta hasznålható a #pragma once, amely egyszerƱbb és automatikusan megakadålyozza a többszörös beillesztést.
#pragma once
â Rövidebb Ă©s hatĂ©konyabb, de nem minden fordĂtĂł tĂĄmogatja.
5. Standard C++ fejlécek
A C++ szĂĄmos beĂ©pĂtett fejlĂ©cet biztosĂt.
| Fejlécek | Tartalom |
|---|---|
<iostream> |
Standard be- és kimenet (pl. std::cin, std::cout) |
<vector> |
Dinamikus tömb (std::vector) |
<string> |
Karakterlånc kezelés (std::string) |
<cmath> |
Matematikai fĂŒggvĂ©nyek (std::sqrt, std::pow) |
<algorithm> |
Algoritmusok (std::sort, std::find) |
<map> |
AsszociatĂv kontĂ©nerek (std::map, std::unordered_map) |
<fstream> |
Fåjlkezelés (std::ifstream, std::ofstream) |
đ Ne hasznĂĄlj C-s fejlĂ©ceket (<stdio.h>, <stdlib.h> stb.), ha van modern C++ megfelelĆje!
Példåul:
â #include <cstdio> helyett #include <iostream>
â #include <cstring> helyett #include <string>
6. Fejlécek és osztålyok
Ha osztĂĄlyokat szeretnĂ©nk fejlĂ©cekben tĂĄrolni, akkor csak a deklarĂĄciĂłt Ărjuk a .h fĂĄjlba, Ă©s a megvalĂłsĂtĂĄst a .cpp fĂĄjlba tesszĂŒk.
đ PĂ©lda: Auto.h fejlĂ©cfĂĄjl
#ifndef AUTO_H
#define AUTO_H
#include <string>
class Auto {
private:
std::string tipus;
public:
Auto(const std::string &t);
void mutat() const;
};
#endif
đ Auto.cpp fĂĄjl
#include "Auto.h"
#include <iostream>
Auto::Auto(const std::string &t) : tipus(t) {}
void Auto::mutat() const {
std::cout << "AutĂł tĂpusa: " << tipus << std::endl;
}
đ main.cpp fĂĄjl
#include "Auto.h"
int main() {
Auto auto1("Toyota");
auto1.mutat();
return 0;
}
â
ElĆnyök:
- TisztĂĄn elkĂŒlönĂŒlnek a deklarĂĄciĂłk (.h) Ă©s a megvalĂłsĂtĂĄsok (.cpp).
- A main.cpp csak a szĂŒksĂ©ges fejlĂ©cet (Auto.h) kell importĂĄlja.
7. Fejlécek és namespace hasznålata
Ha több fĂĄjlban ugyanazokat a neveket hasznĂĄlnĂĄnk, akkor namespace-eket (nĂ©vtereket) kell hasznĂĄlni az ĂŒtközĂ©sek elkerĂŒlĂ©se Ă©rdekĂ©ben.
#ifndef MATH_UTILS_H
#define MATH_UTILS_H
namespace MathUtils {
int osszead(int a, int b);
}
#endif
A math_utils.cpp fĂĄjlban:
#include "math_utils.h"
int MathUtils::osszead(int a, int b) {
return a + b;
}
A main.cpp fĂĄjlban:
#include <iostream>
#include "math_utils.h"
int main() {
std::cout << MathUtils::osszead(3, 4) << std::endl;
return 0;
}
â MegakadĂĄlyozza a nĂ©vĂŒtközĂ©seket.
ĂsszegzĂ©s
| Téma | Magyaråzat |
|---|---|
| MiĂ©rt jĂłk a fejlĂ©cfĂĄjlok? | KĂłd ĂșjrafelhasznĂĄlĂĄs, modularitĂĄs, gyorsabb fordĂtĂĄs |
#include szintaxis |
<...> szabvĂĄnyos, "..." sajĂĄt fĂĄjl |
Include guard (#ifndef) |
Megakadålyozza a többszörös beillesztést |
#pragma once |
EgyszerƱbb alternatĂva include guard helyett |
| SajĂĄt fejlĂ©c kĂ©szĂtĂ©se | .h fĂĄjlban deklarĂĄciĂł, .cpp fĂĄjlban implementĂĄciĂł |
| Osztålyok és fejlécfåjlok | .h osztåly deklaråció, .cpp osztåly implementåció |
A fejlĂ©cfĂĄjlok segĂtenek a kĂłd jobb szervezĂ©sĂ©ben Ă©s hatĂ©konyabbĂĄ teszik a programfejlesztĂ©st! đ