Mi a hátránya az alábbi class definíciónak? (C++)
Java, C# stb. elkényelmesedés után eléggé zavaró minden módosítást bevezetni a header és a forrásfájlba is, pedig cpp-ben így szokták.
Kisebb projektnél van bármilyen gyakorlati hátránya, hogy a headerben hozzuk létre az egész definíciót?
(Elméletileg kapna minden függvény egy inline-t, de a fordítók, többek közt a g++ és a vc++, amiket használok, ezt csak hint-ként kezelik, ha jól vettem ki, de ezt a kész program mérete is igazolja)
"ha csak magadnak kódolsz, akkor érdemesebb magasabb szintű nyelvet választani"
Az a baj, hogy a C++-t is csak kelletlenül használok C helyett, úgyis kb. oop kódot írnék C-ben is, csak itt meg van oldva nyelvi szinten (=könnyítés).
"Ha pedig gyakorolsz, (esetleg másnak is megmutatnád)"
A gyakorláson szerencsére túl vagyok (:P:D), viszont részben a zárójeles megjegyzés miatt is tettem fel a kérdést, ha netán feltolnám a vacakjaimat githubra, nem menekülnek-e el azonnal a nézelődők (gondolom akkor de.)
Na, akkor ez az elgondolás is szép volt, jó volt, ennyi volt.
Kaptad a zöldet, thx.
Nem kötelező a cpp fájlba implementálni egy metódust.
Vannak u.n. header only library-k.
A triviális metódusokat (egysoros return) gyakrak írják a header-be inline-al.
Maga a fordító miatt van különbség amúgy. a .h nem fordítási egység, hanem minden forrásfájlnál include-olja azaz beszúrja a fájl elejére. Ha headerben módosítasz valamit explicit kell újra buildelni a programot, hiszen egy forrásfájlban sem történt változás.
Sok problémát vonz ez a megközelítés, főleg ha rosszul csináljuk. Tipikus hiba amikor a .h fájlok keresztbe hivatkoznak egymásra, ilyenkor kell az osztályokat elő deklarálni. MEg amúgy is ökölszabály, hogy egy headerben nem include-olnunk feleslegesen, az esetek 98%-ban osztály nevekre mint típus hivatkozunk és nem érdekel minket az implementáció, tehát nem is kell beilleszteni (include). Arra ott a cpp.
Maga a fordító miatt ilyen a C++ forrás szerkezete, ez nem egy stílus vagy egy megközelítés, ez ilyen, egy egy natív fordító.
Amúgy különösen jó dolog csapatban, esetleg library kóddal dolgozva, hogy egyetlen fájlt (.h) megnyitsz és egyből képet kapsz arról mi mit csinál. Gyakran teszik a doxy-t is a header fájlba, így még jobban olvasható, a forrásfájlt meg nem szemeteli tele, ahol nem is olyan könnyű megtalálni.
Amúgy:
C++-al a könnyű feladatok néha nehézkessé válnak, a lehetetlen feladatok viszont lehetségessé.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!