Dedicnost – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Dedicnost – C / C++ – Fórum – Programujte.comDedicnost – C / C++ – Fórum – Programujte.com

 

Jumper0
Duch
12. 1. 2007   #1
-
0
-

Cau chtel bych se zeptat jestli nekdo nema prikladek na dedicnost. Diky

Nahlásit jako SPAM
IP: ...–
Jura
~ Anonymní uživatel
637 příspěvků
12. 1. 2007   #2
-
0
-

To je sice krasne, ale jakou dedicnost mas na mysli? Jednoduchou? Vicenasobnou? Virtualni?

Nahlásit jako SPAM
IP: ...–
sn3d0
Věrný člen
12. 1. 2007   #3
-
0
-

Dedicnost a polymorfizmus v priklade:



#include "iostream"

using namespace std;

/*! od tejto triedy budu dedene vsetky ostatne triedy
* akonahle pridas do tejto triedy nejaku fciu,
* mozu ju pouzivat aj dedene triedy
*/
class Zviera
{
public:
/*! Konstruktor */
Zviera() {
cout << "bolo vytvorene zviera" << endl;
}

/*! Tato funkcia je spolocna pre
* vsetky dedene triedy
*/
void spolocnaFcia() {
cout << "toto je spolocna funkcia" << endl;
}

/*! Abstraktna funkcia, neobsahuje telo a
* musi bit implementovana v potomkoch
*/
virtual void menoZvierata() = 0
};

/*! Trieda dedena od triedy zviera.
* v tejto triede je implementovana
* virtualna funkcia menoZvierata()
*/
class Mackovite : public Zviera
{
public:
/*! Tento konstruktor najpr zavola konstruktor
* triedy od ktorej je dedena
*/
Mackovite() : Zviera()
{
cout << "bolo vytvorena trieda Mackovite" << endl;
}


virtual void menoZvierata() {
cout << "zviera je celade mackovitej" << endl;
}
};

/*! Tato trieda dedi od triedy mackovite,
* cize ma vsetko co ma trieda mackovite,
* a jej predok trieda Zviera.Dalej je v tejto
* triede nova implementacia menoZvierata()
*/
class Lev : public Mackovite {
public:
Lev() : Mackovite() {
cout << "bola vytvorena trieda Lev" << endl;
}

virtual void menoZvierata() {
cout << "zviera je Lev" << endl;
Mackovite::menoZvierata();
}
};

/*! To iste co vyzsie menovana trieda */
class Macka : public Mackovite {
public:
Macka() : Mackovite() {
cout << "bola vytvorena trieda Macka" << endl;
}

virtual void menoZvierata() {
cout << "zviera je Macka" << endl;
Mackovite::menoZvierata();
}

}

void zobrazZviera(Zviera* z) {
z->spolocnaFcia();
z->menoZvierata();
}

int main()
{
Zviera* zv1 = new Lev();
Zviera* zv2 = new Macka();

zobrazZviera(zv1);
zobrazZviera(zv2);

delete zv1;
delete zv2;

return 0;
}

Nahlásit jako SPAM
IP: ...–
shutdown -h now
Jumper0
Duch
13. 1. 2007   #4
-
0
-

Nejak jsem to z toho nepochpil potreboval bych pomoct s timto prikladem:

//trida osoba- meno, prijmeni- retazec pohlavi a rodne cislo 6 cisel
//konstruktor s parametry, bez parametru, kopirovaci, prirazovaci operator, destruktor,
//metod typu set -nastavovat, get vracat

Nahlásit jako SPAM
IP: ...–
joudikkk
~ Anonymní uživatel
5 příspěvků
13. 1. 2007   #5
-
0
-

To Jumper: A kde tam ma bejt ta dedicnost?

Nahlásit jako SPAM
IP: ...–
Jura
~ Anonymní uživatel
637 příspěvků
13. 1. 2007   #6
-
0
-

To Jumper: Hmm, to jsi mel naspat hned. Tim by jsi usetril sn3d tech par minut casu, kterou tomu venoval. Krome toho sis asi spletl i pojmy.
Pisu to z hlavy:



class COsoba{
char * mJmeno, *mPrijmeni;
bool mJeMuz;
int mRC[6];
public:
COsoba(): mJmeno(0),mPrijmeni(0), mJeMuz(true) {} // ctor bez prametru(vychozi)
COsoba(const char* jmeno, const char*prijemni, bool muz,const int RC[6]): // ctor s parametry
{
mJmeno = strdup(jmeno);
mPrijmeni = strdup(prijmeni);
mJeMuz = muz;
memcpy(mRC, RC, sizeof(int)*6);
}

COsoba(const COsoba& obj) // cpy - ctor
{
mJmeno = strdup(obj.mJmeno);
mPrijmeni = strdup(obj.mPrijmeni);
mJeMuz = obj.mJeMuz;
memcpy(mRC, obj.mRC, sizeof(int)*6);

}

~COsoba() // dctor
{
if(mJmeno) free((void*)mJmeno);
if(mPrijemni) free((void*)mPrijmeni);

}

COsoba& operator=(const COsoba& obj) // operator prirazeni
{
if(&obj != this){
if(mJmeno) free((void*) mJmeno);
if(mPrijemi) free((void*) mPrijmeni);
mJmeno = strdup(obj.mJmeno);
mPrijmeni = strdup(obj.mPrijmeni);
mJeMuz = obj.mJeMuz;
memcpy(mRC, obj.mRC, sizeof(int)*6);
}
return *this;
}
// set metody
void NastavJmeno(const char* jmeno) { if(mJmeno) free((void*)mJmeno); mJmeno = strdup(jmeno);}
void NastavPrijmeni(const char* prijmeni) { if(mPrijmeni) free((void*)mPrijmeni); mJmeno = strdup(prijmeni);}
void NastavPohlavi(bool muz) { mJeMuz = muz;}
void NastavRC(const int RC[6]) {memcpy(mRC, RC, sizeof(int)*6);}

// get metody
inline const char* DejJmeno() const { return mJmeno;}
inline const char* DejPrijemni() const {return mPrijmeni;}
inline bool DejPohlavi() const {return mJeMuz;}
inline const int* DejRC() const {return mRC;}


};


Mozna jsou tam chyby, psal jsem to z hlavy. a mozna by nebylo od veci, kdyby sis tam udelal metodu,ktera by cistila pamet, protoze v kodu mam porad dokola if(mJmeno) ... if(mPrijmeni).

Nahlásit jako SPAM
IP: ...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

Podobná vlákna

Dědičnost — založil paul27

Dedicnost ... — založil Koudis

Dědičnost — založil Bobek

Dědičnost — založil cheeester

Dedičnosť — založil Grungy

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý