| | |
| Stránka: 1 z 1
| [ Príspevkov: 4 ] | |
Autor | Správa |
---|
Registrovaný: 30.05.07 Prihlásený: 29.03.14 Príspevky: 641 Témy: 46 |
ahoj,
akurat to preberame v skole a nie je mi jasne toto:
mame vytvorit subor nieco.h, nieco.cc, niecomain.cc kde:
nieco.h ma byt klasicky header file a ma obsahovat definicie tried
nieco.cc ma obsahovat implementaciu tried
niecomain.cc hlavny program
a teraz nechapem preco to je v c++ tak ze v hlavickovom by mali byt triedy a iba kratke metody a v nieco.cc by mali byt ostatne (dlhsie) metody k danym triedam. (teda takto nas to ucia). Preco to nemoze byt tak ako v jave ze proste mam triedu na jednom mieste a vsetko co k nej patri tak je v nej? Rad by som pocul nejake vysvetlenie preco sa to ma takto robit lebo sa mi to zda uplne nezmyselne a neprehladne.
A este jedna vec, ak mate nejaky kvalitny zdroj kde sa da ucit c++ a je tam vela prikladov tak sem s nim, lebo zatial co som nasiel bola bieda, stale sa pokusam najst nejaky vzorovy priklad kde bude viac tried s dedenim a s pouzitim konstruktorov ale akosi nikde nic, vsade iba jednoduche kusky kodu...
edit: este sa opytam k tej prvej casti, ze aka je vlastne konvencia, co vsetko v ramci triedy sa ma pisat do headeru a co sa ma implementovat mimo? napriklad gettery a settery tam mozu byt? alebo lepsie je do headeru napisat iba nazov triedy a prototypy (neviem ci sa to tak vola) metod a vsetky implementacie uviest az v dalsom subore? Pripadne aka je vhodna dlzka metody aby sa pisala inline?
edit2: prave som nasiel celkom dobry priklad kde je to robene tak ze ani jedna metoda v triede nie je definovana inline - je to tak lepsie ako keby tam boli nejake inline metody?
|
|
Registrovaný: 21.06.07 Prihlásený: 06.05.13 Príspevky: 421 Témy: 4 | Napísal sento: 03.11.2008 18:21 | |
|
ak mas taketo daco:
tr1.h
tr1.cpp
tr2.h
tr2.cpp
a ak v triede tr2 pouzivas nieco z triedy tr1, tak das:
#include tr1.h ... a prida Ti to LEN tych par riadkov (deklaracii) z headru, nemusia sa pridavat aj cele implementacie;
no a ak zmenis nieco v tr1.cpp, tak prekladac bude prekladat len tr1.cpp;
ak by cela implementacia tried bola v headri, tak by sa prekladal aj tr2.cpp;
mimochodom, je to len o akomsi "poriadku" v zdrojovych kodoch; Ak by si velmi chcel, tak mozes dat vsetko (*.h aj *.cpp) do jedneho suboru, ale prekladac Ti bude vzdy, pri akejkolvek zmene prekladat vstko;
PS: ak sa dostanes ku C#, tak tam je uz cela trieda (defklaracie aj definicie) pre danu triedu v jednom subore;
Podstata je v tom, aby si pisal taky kod, ze sa v nom vyznas aspon Ty, ak uz nie niekto iny;
|
|
Registrovaný: 16.05.07 Prihlásený: 01.08.17 Príspevky: 837 Témy: 6 | Napísal juho: 03.11.2008 20:02 | |
|
akoze moze to byt kludne aj secko v jednom subore ked uz nato prijde....
pozri builder.cz
_________________ getch();?{readkey;?} na konci? !A naco! Riesenie je (Alt+F5)
99% pochopí a shaggy je druhá kategória |
|
Registrovaný: 30.05.07 Prihlásený: 29.03.14 Príspevky: 641 Témy: 46 |
nj dik, tak uz viem teda ze ten sposob co teraz od nas vyzaduju v skole ze to je iba jedna z konvencii a nie je nutne to vzdy dodrzat
ked uz som to tu zalozil tak este dam jednu otazku prakticku:
mam abstraktnu triedu A a jej potomkov B a C. B a C sa v niecom lisia ale su navzajom porovnatelne takze som spravil funkciu pre sort(...) ktora ich porovnava:
bool fca(A a1, A a2) {...}
problem je ze mi pise chybu ze A je abstraktna - nedaju sa vytvorit instancie a1 a a2 - to je logicke, ale neviem ako to spravit, v jave si pamatam ze sa to nejako pekne dalo. Da sa to aj v C++ alebo budem musiet to porovnavanie nejako inak spravit?
EDIT2: ok tak stacilo napisat:
bool fca(const A *a1, const A *a2) {}
na toto si budem dlho zvykat na tie *, &, -> ...
EDIT1: dalsia otazka: ako sa stane trieda v cpp abstraktna? staci ked ma aspon jednu virtualnu metodu? moze byt trieda abstraktna aj ked nema ani jednu virtualnu metodu?
|
|
| Stránka: 1 z 1
| [ Príspevkov: 4 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Ako pracovat s joomla v Redakčné systémy | 6 | 1859 | 22.09.2011 16:07 Bajzik | | Pamäte:Budu pracovať ako chcem? v Pamäte | 2 | 509 | 31.10.2008 17:49 mimkork | | Ako pracovať s AV VCS Diamond v Audio programy | 1 | 846 | 30.04.2008 20:16 Chooosen | | Ako pracovat v Jave s GUI oknami? [ Choď na stránku: 1, 2 ] v Assembler, C, C++, Pascal, Java | 35 | 1712 | 08.06.2015 20:05 shiro | | JAVA - Vyriešenie problému s triedami v Assembler, C, C++, Pascal, Java | 1 | 360 | 09.05.2016 13:03 walther | | Zišiel by sa návod - ako pracovať s SQL v Databázy | 1 | 2609 | 04.07.2006 11:31 wlacho | | Ako bude pracovat dual channel v zapojeni 4x 256mb 533mhz v Pamäte | 6 | 863 | 06.02.2007 22:17 chester55555 | | Ako nastavit grafikuv AMD catalyst c.c. v ATI/AMD grafické karty | 17 | 1483 | 26.12.2013 11:38 walther | | C - Ako prekompilovať .c súbor do .exe? v Assembler, C, C++, Pascal, Java | 7 | 555 | 02.11.2012 18:47 MasterMatoSK | | Ako zformátovať C: v Operačné systémy Microsoft | 2 | 335 | 24.11.2009 15:51 El_locco | | Ako začať s c++ [ Choď na stránku: 1, 2 ] v Assembler, C, C++, Pascal, Java | 37 | 1012 | 16.10.2013 13:00 Caliente | | C++...ako zistiť OS ?... v Assembler, C, C++, Pascal, Java | 3 | 744 | 20.03.2009 20:43 Fico | | Ako ďalej? C++, Pascal.. v Assembler, C, C++, Pascal, Java | 12 | 585 | 29.01.2015 18:53 walther | | C# ako zmenit BalloonTipIcon ? v Technológia .NET | 0 | 999 | 03.09.2010 19:12 skorec1 | | Ako na vstupy v C++ v Assembler, C, C++, Pascal, Java | 2 | 879 | 05.10.2007 16:42 programator | | Ako vypnut kontrolu disku C v Operačné systémy Microsoft | 2 | 509 | 28.02.2010 12:24 Pistuk_14 |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|