Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 7 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.10.09
Prihlásený: 23.06.22
Príspevky: 289
Témy: 51
Bydlisko: Kysucké Nov...
Príspevok NapísalOffline : 24.04.2012 23:38

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 :D
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íspevku

eš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
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 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];


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.10.09
Prihlásený: 23.06.22
Príspevky: 289
Témy: 51
Bydlisko: Kysucké Nov...
Príspevok Napísal autor témyOffline : 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
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 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žú.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.10.09
Prihlásený: 23.06.22
Príspevky: 289
Témy: 51
Bydlisko: Kysucké Nov...
Príspevok Napísal autor témyOffline : 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
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 25.04.2012 7:14

Ej, no to je ťažké :D

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!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.10.09
Prihlásený: 23.06.22
Príspevky: 289
Témy: 51
Bydlisko: Kysucké Nov...
Príspevok Napísal autor témyOffline : 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
Odpovedať na tému [ Príspevkov: 7 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. java dedicnost

v Assembler, C, C++, Pascal, Java

1

207

30.04.2013 9:49

Gabho027 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. dedicnost v php

v PHP, ASP

11

819

03.09.2010 9:21

awase Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Excelovský vzorec - viacnásobná podmienka/vymedzenie vzorec

v Ostatné programy

2

798

12.03.2013 12:20

frenkacik Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Mám sa učiť C ++/objective C/ C#?

v Assembler, C, C++, Pascal, Java

5

724

08.07.2014 20:40

XOLOO Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. K: PC Literaturu- C++/C#/java/python/ruby/RoR

v Kúpim

0

405

13.05.2014 18:16

expresado Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. rozdiel medzi Borland 3.1 C++ vs Net. C++

v Assembler, C, C++, Pascal, Java

4

569

20.07.2010 12:54

walther Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Naučte se C++ za 21 dní + C++Builder 6

v Assembler, C, C++, Pascal, Java

18

2406

21.05.2010 21:08

Wpegb Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Hledá se programátor C/C++ pro vesmírné projekty (Praha)

v Ponuka práce

0

1116

10.05.2016 14:59

evolvsys Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Hladam hracov na C&C Generals Zero Hour

v Počítačové hry

10

1243

07.03.2007 19:22

Spirit Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. aky je rozdiel medzi C++ a Visual C++ ?

v Assembler, C, C++, Pascal, Java

8

1952

19.02.2011 22:46

vendo2 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Čo mi treba na programovanie v C/C++

v Assembler, C, C++, Pascal, Java

17

1140

25.09.2011 18:14

reDo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Hladame 3x C/C++ Linux developer- projekt 11/2016-2/2017

v Ponuka práce

1

545

24.10.2016 15:28

michalesku Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Darujem knihy o programovaní (HTML, Java, Visual C++, C++ Builder, Android)

v Vymením a darujem

0

421

01.04.2019 11:20

tomasteicher Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C/C++ problém so súbormi a hodnotami

v Assembler, C, C++, Pascal, Java

2

304

09.12.2012 10:43

nBXXL Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C# alebo C++ , ktore knizky na ucenie?

v Assembler, C, C++, Pascal, Java

20

1784

12.02.2011 0:12

The Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C# alebo C++ appka/program na výpočty

v Assembler, C, C++, Pascal, Java

1

369

20.03.2015 22:36

walther Zobrazenie posledných príspevkov


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

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra