Kezdőoldal » Számítástechnika » Programozás » Mi a hátránya az alábbi class...

Mi a hátránya az alábbi class definíciónak? (C++)

Figyelt kérdés

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)



2014. dec. 31. 16:40
 1/7 anonim ***** válasza:
Gyakorlati hátránya nincs. De ha csak magadnak kódolsz, akkor érdemesebb magasabb szintű nyelvet választani. Ha pedig gyakorolsz, (esetleg másnak is megmutatnád), akkor érdemes a nagyban használt módszert megszokni.
2014. dec. 31. 17:29
Hasznos számodra ez a válasz?
 2/7 A kérdező kommentje:

"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.)

2014. dec. 31. 17:47
 3/7 A kérdező kommentje:
Apró javítás: a gyakorlást a nyelvre értettem nyilván, a többi holtig..
2014. dec. 31. 17:48
 4/7 anonim ***** válasza:
Akkor persze, a coding standardokhoz tartsuk magunkat amennyire lehet.
2014. dec. 31. 17:53
Hasznos számodra ez a válasz?
 5/7 A kérdező kommentje:

Na, akkor ez az elgondolás is szép volt, jó volt, ennyi volt.

Kaptad a zöldet, thx.

2014. dec. 31. 17:58
 6/7 A kérdező kommentje:

Közben az angol verzió is meglett:

[link]

[link]

[link]


De ők is leverték a "lázadást" :)

2014. dec. 31. 18:14
 7/7 anonim ***** válasza:
100%

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é.

2015. jan. 1. 14:25
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!