/* 2. félév, C++ nyelv A C++ obj,orient.tulajdonságai Egyszerű példa konstruktorra és destruktorra Öröklődés. */ // 1. példa: vektor adattag dinamikus foglalása a konstruktorral az objektum // létrehozása pillanatában, // valamint felszabaditása a destruktorral az objektum megszünésekor /* #include #include #include typedef char nevtip[40]; class Csalad { private: nevtip papa, mama; int gyerekszam; nevtip* gyerekek; public: Csalad(int gyerekszam0= 0); //konstruktor deklarációja ~Csalad(); //destruktor deklarációja int GetGyerekszam(){return gyerekszam;} void SetPapa(nevtip papabe){strcpy(papa,papabe);} void GetPapa(nevtip& papaki){strcpy(papaki,papa);} void SetMama(nevtip mamabe){strcpy(mama,mamabe);} void GetMama(nevtip& mamaki){strcpy(mamaki,mama);} void SetGyerek(int i, nevtip gyerekbe){strcpy(gyerekek[i],gyerekbe);} void GetGyerek(int i, nevtip gyerekki){strcpy(gyerekki,gyerekek[i]);} }; Csalad mezgacsalad(2); //kétgyerekes család objektum létrehozása void main() { clrscr(); puts("Konstruktor-destruktor alkalmazási példa\n"); // A mézgacsalád objektum feltöltése nevekkel mezgacsalad.SetPapa("Mézga Géza"); mezgacsalad.SetMama("Mézga Gézáné szül. Gyantás Paula"); mezgacsalad.SetGyerek(0,"Mézga Kriszta"); mezgacsalad.SetGyerek(1,"Mézga Aladár"); // A mézgacsalád tagjainak kiiratása: nevtip nevki; mezgacsalad.GetPapa(nevki); printf("\nA papa: %s",nevki); mezgacsalad.GetMama(nevki); printf("\nA mama: %s",nevki); for (int i=0; i #include #include #include #include #define IGEN 1 #define NEM 0 typedef char nevtip[40]; typedef int bool; enum vallastip {katolikus,reformatus,gorogkatolikus,izraelita,egyeb}; class Epulet { protected: nevtip neve; int helyisegekszama; int magassaga; public: //a fordító által létrehozott rejtett automatikus konstruktort és //destruktort használja, mert nem adtunk meg sajátot. //karaktervektor adattag írható, olvasható a nevével, mint pointerrel: void SetNeve(nevtip neveIn){strcpy(neve,neveIn);} void GetNeve(nevtip neveOut){strcpy(neveOut,neve);} void SetHelyisegekszama(int helyisegekszamaIn) {helyisegekszama= helyisegekszamaIn;} int GetHelyisegekszama(){return helyisegekszama;} void SetMagassaga(int magassagaIn){magassaga= magassagaIn;} int GetMagassaga(){return magassaga;} }; // a származtatott osztályok: class Kastely : public Epulet { private: int tornyokszama; bool szellemvan; public: void SetTornyokszama(int tornyokszamaIn){tornyokszama= tornyokszamaIn;} int GetTornyokszama(){return tornyokszama;} void SetSzellemvan(bool szellemvanIn){szellemvan= szellemvanIn;} bool GetSzellemvan(){return szellemvan;} }; class Templom : public Epulet { private: vallastip vallas; int szentkepekszama; int harangokszama; bool orgonavan; public: void SetVallas(vallastip vallasIn){vallas= vallasIn;} vallastip GetVallas(){return vallas;} void SetSzentkepekszama(int szentkepekszamaIn) {szentkepekszama= szentkepekszamaIn;} int GetSzentkepekszama(){return szentkepekszama;} void SetHarangokszama(int harangokszamaIn) {harangokszama= harangokszamaIn;} int GetHarangokszama(){return harangokszama;} void SetOrgonavan(bool orgonavanIn) { orgonavan= orgonavanIn;} bool GetOrgonavan(){return orgonavan;} }; Kastely kastely; //csak egy kastély van a vármegyében int templomokszama; Templom * templomok; //viszont templom sok void main() {clrscr(); puts("Vármegye - öröklés alkalmazás demo\n"); cout << "Templomok szama= "; cin >> templomokszama; templomok = new Templom[templomokszama]; //dinamikus foglalás cout << "Add meg a kastély jellemzőit!" << endl; nevtip nev; cout << "Neve: "; gets(nev); kastely.SetNeve(nev); int n; cout << "Helyiségek száma= "; cin >> n; kastely.SetHelyisegekszama(n); cout << "Magassága= "; cin >> n; kastely.SetMagassaga(n); cout << "Tornyok száma= "; cin >> n; kastely.SetTornyokszama(n); bool v; cout << "Szellemek vannak? (I/N):"; v= 'I' == toupper(getch()); kastely.SetSzellemvan(v); //templomok: if (templomokszama) //ha van egyáltalán {int k; do { cout << "\nHányadik templom jellemzőit adod meg? k= "; cin >> k; } while ( k<0 || k>templomokszama); cout << "Neve: "; gets(nev); templomok[k].SetNeve(nev); cout << "Helyiségek száma= "; cin >> n; templomok[k].SetHelyisegekszama(n); cout << "Magassága= "; cin >> n; templomok[k].SetMagassaga(n); cout << "Vallás sorszáma (0..4)= "; unsigned z; cin >> z; z>4 ? z=4:z=z; templomok[k].SetVallas(vallastip(z)); cout << "Szentképek száma= "; cin >> n; templomok[k].SetSzentkepekszama(n); cout << "Harangok száma= "; cin >> n; templomok[k].SetHarangokszama(n); cout << "Orgona van? (I/N):"; v= 'I' == toupper(getch()); templomok[k].SetOrgonavan(v); } }