| | |
| Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
Autor | Správa |
---|
Registrovaný: 11.10.09 Prihlásený: 23.06.22 Príspevky: 289 Témy: 51 Bydlisko: Kysucké Nov... |
Zdravím,
potreboval by som pomôcť. Hľadám nejaký schopný príklad na pochopenie viacnásobnej dedičnosti, ale nejak nič použiteľné neviem nájsť. Máte nejaké overené zdroje na internete? Prípadne, nenašiel by sa niekto, kto by mi tu napísal jednoduchú ukážku zdrojáku na pochopenie?
Ďakujem za každú reakciu.
EDIT:
tak som sa prehrabal aj v google v anglictine, uz nikdy viac vyhladavanie po slovensky
ak by niekto potreboval, moj mini priklad:
Kód: #include <iostream> #include <cstdlib> using namespace std;
class kopirka { public: void k_info(){ cout<<"- Viem kopirovat"<<endl;} };
class tlaciaren { public: void t_info(){cout<<"- Viem tlacit"<<endl;} };
class skener { public: void s_info(){cout<<"- Viem skenovat"<<endl;} };
class multi_zariadenie : public kopirka, public tlaciaren, public skener { public: void m_info(){cout<<"Multifunkcne zariadenie"<<endl;} };
int main() { multi_zariadenie* HP = new multi_zariadenie; HP->m_info(); HP->k_info(); HP->t_info(); HP->s_info();
system("pause"); }
// pridané po 4 hodinách 49 minútach od posledného príspevkuešte by som potreboval poradit v jednej veci. Chcem do kazdeho prvku pola alokovat objekt. Ako ale zadeklarujem to pole? Bude to pole ukazovatelov. Moze to byt takto? Kód: #include <iostream> using namespace std;
class trieda { private: int cena; public: trieda(int cena); //konstruktor void get_cena(); }; trieda::trieda(int cena) { this->cena = cena; } void trieda::get_cena() { cout<<this->cena<<endl; }
int main() { trieda *pole[3]; pole[0] = new trieda(20); pole[1] = new trieda(10); pole[2] = new trieda(50);
for(int i=0; i < 3; i++) { pole[i]->get_cena(); }
delete[] pole;
}
teraz mi program spadne pri tom delete[] pole
EDIT: preklepol som sa, navratovu hodnotu fcie get_cena som mal ako int, po opraveni na void mi uz program nepada. Ale aj tak sa mi ta deklaracia pola nepozdava.
_________________ cpu intel c2q9550, 2.83GHz @ 3.91 GHz gpu asus eah4890 hdti 1GD5 1Gb ddr5 pcx zakl.doska asus p5q e HDD samsung 1Tb sata2 32Mb ram a-data ddr2 4x2Gb 1066+MHz Extreme zdroj fortron everest 600w 80+ skrinka enermax staray blue monitor LG 23" LCD W2343T-PF 2ms FULL HD DVI reproduktory Creative T6100 5.1 |
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 24.04.2012 23:52 | |
|
Neviem, čo s tým má nejaká návratová hodnota, to muselo hodiť maximálne warning.
Tu je chyba inde a síce v tom, že ty voláš delete na hodnoty na zásobníku a triedy nechávaš v pamäti
Správne by to malo byť namiesto delete [] pole toto:
Kód: for ( int i = 0; i < 3; i++ ) delete pole[i];
|
|
Registrovaný: 11.10.09 Prihlásený: 23.06.22 Príspevky: 289 Témy: 51 Bydlisko: Kysucké Nov... | Napísal autor témy t-pack25: 24.04.2012 23:58 | |
|
diki moc za rychlu odpoved.
uz tomu teda rozumiem. Myslel som ze delete[] vymaze aj tie jednotlive prvky
inak je to teda spravne zapisane? (okrem toho dealokovania samozrejme)
_________________ cpu intel c2q9550, 2.83GHz @ 3.91 GHz gpu asus eah4890 hdti 1GD5 1Gb ddr5 pcx zakl.doska asus p5q e HDD samsung 1Tb sata2 32Mb ram a-data ddr2 4x2Gb 1066+MHz Extreme zdroj fortron everest 600w 80+ skrinka enermax staray blue monitor LG 23" LCD W2343T-PF 2ms FULL HD DVI reproduktory Creative T6100 5.1 |
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 25.04.2012 0:06 | |
|
Inak je to v podstate správne, ale ja by som vynechal ten zásobník a hodil to pekne všetko to pamäte, takto:
Kód: trieda ** pole = new trieda* [3];
... pracuje sa s tým rovnako ...
for ( int i = 0; i < 3; i++ ) delete pole[i]; delete [] pole;
Pokiaľ ide o to delete, tak delete [] pole, by malo zmazať každý prvok poľa a na každý zavolať deštruktor. U ukazateľov je toto ale bezpredmetné, takže sa len zmažú.
|
|
Registrovaný: 11.10.09 Prihlásený: 23.06.22 Príspevky: 289 Témy: 51 Bydlisko: Kysucké Nov... | Napísal autor témy t-pack25: 25.04.2012 0:19 | |
|
diki, mohol by si mi prosim slovne popisat, co urobi tento riadok?
Kód: trieda ** pole = new trieda* [3];
_________________ cpu intel c2q9550, 2.83GHz @ 3.91 GHz gpu asus eah4890 hdti 1GD5 1Gb ddr5 pcx zakl.doska asus p5q e HDD samsung 1Tb sata2 32Mb ram a-data ddr2 4x2Gb 1066+MHz Extreme zdroj fortron everest 600w 80+ skrinka enermax staray blue monitor LG 23" LCD W2343T-PF 2ms FULL HD DVI reproduktory Creative T6100 5.1 |
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 25.04.2012 7:14 | |
|
Ej, no to je ťažké
Toto ti v podstate vytvorí pole ukazateľov na objekty typu trieda. Tie sú ale tiež reprezentované ukazateľmi na ne (teda ukazateľmi na "ich počiatok", ktorý vráti operátor new). Takže je to vlastne pole ukazateľov na ukazatele na objekty typu trieda.
Toto je lepšie si nakresliť a vidieť to, ale nevygoglil som žiadny pekný obrázok, tak to budeš musieť zvládnuť sám.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 11.10.09 Prihlásený: 23.06.22 Príspevky: 289 Témy: 51 Bydlisko: Kysucké Nov... | Napísal autor témy t-pack25: 25.04.2012 16:55 | |
|
jj uz tomu rozumiem. Aj som si myslel ze to tak je, len som potreboval sa uistit diki este raz
_________________ cpu intel c2q9550, 2.83GHz @ 3.91 GHz gpu asus eah4890 hdti 1GD5 1Gb ddr5 pcx zakl.doska asus p5q e HDD samsung 1Tb sata2 32Mb ram a-data ddr2 4x2Gb 1066+MHz Extreme zdroj fortron everest 600w 80+ skrinka enermax staray blue monitor LG 23" LCD W2343T-PF 2ms FULL HD DVI reproduktory Creative T6100 5.1 |
|
| Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| java dedicnost v Assembler, C, C++, Pascal, Java | 1 | 207 | 30.04.2013 9:49 Gabho027 | | dedicnost v php v PHP, ASP | 11 | 819 | 03.09.2010 9:21 awase | | Excelovský vzorec - viacnásobná podmienka/vymedzenie vzorec v Ostatné programy | 2 | 798 | 12.03.2013 12:20 frenkacik | | Mám sa učiť C ++/objective C/ C#? v Assembler, C, C++, Pascal, Java | 5 | 724 | 08.07.2014 20:40 XOLOO | | K: PC Literaturu- C++/C#/java/python/ruby/RoR v Kúpim | 0 | 405 | 13.05.2014 18:16 expresado | | rozdiel medzi Borland 3.1 C++ vs Net. C++ v Assembler, C, C++, Pascal, Java | 4 | 569 | 20.07.2010 12:54 walther | | Naučte se C++ za 21 dní + C++Builder 6 v Assembler, C, C++, Pascal, Java | 18 | 2406 | 21.05.2010 21:08 Wpegb | | Hledá se programátor C/C++ pro vesmírné projekty (Praha) v Ponuka práce | 0 | 1116 | 10.05.2016 14:59 evolvsys | | Hladam hracov na C&C Generals Zero Hour v Počítačové hry | 10 | 1243 | 07.03.2007 19:22 Spirit | | aky je rozdiel medzi C++ a Visual C++ ? v Assembler, C, C++, Pascal, Java | 8 | 1952 | 19.02.2011 22:46 vendo2 | | Čo mi treba na programovanie v C/C++ v Assembler, C, C++, Pascal, Java | 17 | 1140 | 25.09.2011 18:14 reDo | | Hladame 3x C/C++ Linux developer- projekt 11/2016-2/2017 v Ponuka práce | 1 | 545 | 24.10.2016 15:28 michalesku | | Darujem knihy o programovaní (HTML, Java, Visual C++, C++ Builder, Android) v Vymením a darujem | 0 | 421 | 01.04.2019 11:20 tomasteicher | | C/C++ problém so súbormi a hodnotami v Assembler, C, C++, Pascal, Java | 2 | 304 | 09.12.2012 10:43 nBXXL | | C# alebo C++ , ktore knizky na ucenie? v Assembler, C, C++, Pascal, Java | 20 | 1784 | 12.02.2011 0:12 The | | C# alebo C++ appka/program na výpočty v Assembler, C, C++, Pascal, Java | 1 | 369 | 20.03.2015 22:36 walther |
| 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
|
|