/* 2. felev, uj tematika, C++ nyelv A C++ obj,orient.tulajdonsagai 9. gyak GEPESZ Egyszeru pelda konstruktorra es destruktorra Oroklodes. */ // 1. pelda: vektor adattag dinamikus foglalasa a konstruktorral az objektum // letrehozasa pillanataban, // valamint felszabaditasa a destruktorral az objektum megszunesekor /* #include #include #include typedef char nevtip[40]; class Csalad { private: nevtip papa, mama; int gyerekszam; nevtip* gyerekek; public: Csalad(int gyerekszam0= 0); //konstruktor deklaracioja ~Csalad(); //destruktor deklaracioja 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); //ketgyerekes csalad objektum letrehozasa void main() { clrscr(); puts("Konstruktor-destruktor alkalmazasi pelda\n"); // A mezgacsalad objektum feltoltese nevekkel mezgacsalad.SetPapa("Mezga Geza"); mezgacsalad.SetMama("Mezga Gezane szul. Gyantas Paula"); mezgacsalad.SetGyerek(0,"Mezga Kriszta"); mezgacsalad.SetGyerek(1,"Mezga Aladar"); // A mezgacsalad tagjainak kiiratasa: 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 fordito altal letrehozott rejtett automatikus konstruktort es //destruktort hasznalja, mert nem adtunk meg sajatot. //karaktervektor adattag irhato, olvashato a nevevel, 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 szarmaztatott osztalyok: 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 kastely van a varmegyeben int templomokszama; Templom * templomok; //viszont templom sok void main() {clrscr(); puts("Varmegye - orokles alkalmazas demo\n"); cout << "Templomok szama= "; cin >> templomokszama; templomok = new Templom[templomokszama]; //dinamikus foglalas cout << "Add meg a kastely jellemzoit!" << endl; nevtip nev; cout << "Neve: "; gets(nev); kastely.SetNeve(nev); int n; cout << "Helyisegek szama= "; cin >> n; kastely.SetHelyisegekszama(n); cout << "Magassaga= "; cin >> n; kastely.SetMagassaga(n); cout << "Tornyok szama= "; cin >> n; kastely.SetTornyokszama(n); bool v; cout << "Szellemek vannak? (I/N):"; v= 'I' == toupper(getch()); kastely.SetSzellemvan(v); //templomok: if (templomokszama) //ha van egyaltalan {int k; do { cout << "\nHanyadik templom jellemzoit adod meg? k= "; cin >> k; } while ( k<0 || k>templomokszama); cout << "Neve: "; gets(nev); templomok[k].SetNeve(nev); cout << "Helyisegek szama= "; cin >> n; templomok[k].SetHelyisegekszama(n); cout << "Magassaga= "; cin >> n; templomok[k].SetMagassaga(n); cout << "Vallas sorszama (0..4)= "; unsigned z; cin >> z; z>4 ? z=4:z=z; templomok[k].SetVallas(vallastip(z)); cout << "Szentkepek szama= "; cin >> n; templomok[k].SetSzentkepekszama(n); cout << "Harangok szama= "; cin >> n; templomok[k].SetHarangokszama(n); cout << "Orgona van? (I/N):"; v= 'I' == toupper(getch()); templomok[k].SetOrgonavan(v); } }