Kezdőoldal » Számítástechnika » Programozás » C++-ban hogy tudom C# szerűen...

C++-ban hogy tudom C# szerűen használni az öröklés előnyeit? Hogyan tudok egyszerűen generikus tárolót csinálni és utólag cast-olgatni az elemeket felhasználás szerint?

Figyelt kérdés
C#-ban kézenfekvő ha egy olyan listába dobálom az elemeket, ami az ősosztály típusával lett létrehozva. Utólag "is" "as" kulcsszavakkal is könnyen tudom ellenőrizni az adott elem típusát és aszerint ki cast-olni. Ha ugyanezt akarom C++-ban megcsinálni akkor azt csak 2-3-szor annyi kóddal tudom megoldani. Ki lehet küszöbölni valahogy a párhuzamos tárolók vagy smart pointerek bevezetését illetve a típus ellenőrzéshez az osztályazonosító változók bevezetését?
2018. máj. 24. 15:15
1 2
 1/15 A kérdező kommentje:

Közben próbálgattam összehozni valami megoldást. Szerintetek ez vállalható?

[link]

2018. máj. 24. 15:46
 2/15 anonim ***** válasza:

Elsőként szerintem próbáld megérteni a következő c++ cast-olásokat:

reinterpret_cast, static_cast, dynamic_cast, const_cast

2018. máj. 24. 17:56
Hasznos számodra ez a válasz?
 3/15 anonim ***** válasza:
Ne akarj C++-ban C#-osan programozni, nem vezet semmi jóra.
2018. máj. 24. 17:58
Hasznos számodra ez a válasz?
 4/15 anonim ***** válasza:
0%
Legyen olyan lekérdezhető attribútumod definiálva az ősosztályban, ami megmondja az objektumod pontos típusát. Persze ezt minden osztályban be kell állítanod. Ennek ismeretében tudod, hogy mivé kell alakítanod, hogy visszakapd az eredeti típust.
2018. máj. 24. 18:14
Hasznos számodra ez a válasz?
 5/15 anonim ***** válasza:
Amit csinálni akarsz az kicsit ellent mond az oop-nek szerintem. Azért van egy base classod, hogy annak az interfacet használd és híváskor mindegy legyen, hogy mi a konkrét típusod.
2018. máj. 24. 19:59
Hasznos számodra ez a válasz?
 6/15 anonim ***** válasza:
6%
#5: Marhaság.
2018. máj. 24. 20:05
Hasznos számodra ez a válasz?
 7/15 anonim ***** válasza:

#6: Köszönöm szépen a részletesen kifejtett, szakmailag indokolt véleményt.


Ha esetleg kifejted, hogy miért gondolod így, akkor érdemben is beszélhetünk a dologról!

2018. máj. 24. 21:04
Hasznos számodra ez a válasz?
 8/15 anonim ***** válasza:
44%

#7 veled értek egyet. Ez nem marhaság, aki így gondolja, az nem ad ki minőségi kódot a kezéből.

A C#-ot meg felejtsd el c++-ban, nem sokban hasonlítanak, egész más szemlélet kell hozzá. Inkább a javára hasonlít a C#.

Igen, 2-3szor annyi kód kellhet bizonyos dolgokhoz, cserébe jobban "skálázható", azaz nem eszi meg az erőforrásokat exponenciálisan. Ha írtál C# és C++ programot, látni lehet a sebesség, és gépigény különbségeket, és ez összefügg azzal, hogy hogyan működnek a nyelvek.

2018. máj. 24. 22:11
Hasznos számodra ez a válasz?
 9/15 anonim ***** válasza:
26%

Nem sok értelmét látom ennyire kezdőkkel leállni vitatkozni az OOP-ről, de ám legyen.

Nem létezik semmiféle olyan OOP alapelv, hogy kötelező lenne mindig az ősosztályt használni és sosem lehet szükség a konkrét származtatott osztályra.

Aki ilyet állít, az NYÍLVÁNVALÓAN nem hogy "nem minőségi", de semmilyen valódi OOP kódot nem írt még.

Az, hogy őspéldány helyett lehet mögötte származtatott példány az egy lehetőség, akkor, ha nem fontos a konkrét implementáció. Attól ez még nem lesz semmiféle alapelv, csak egy lehetőség.

Olvasgassatok még a témában, programozzatok, van még mit tanulnotok mielőtt okoskodni kezdtek.

2018. máj. 24. 23:50
Hasznos számodra ez a válasz?
 10/15 anonim ***** válasza:
Aki meg olyanokat ír, hogy a c# kódok "exponenciálisan megeszik az erőforrást", azzal tényleg nincs sok értelme vitatkozni, mert nyilván csak a levegőbe beszél és nincs valódi tapasztalata.
2018. máj. 24. 23:52
Hasznos számodra ez a válasz?
1 2

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!