Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <list>
- #include <iterator>
- #include <stdlib.h>
- #include <string>
- using namespace std;
- class Persoana { // clasa de baza
- private:
- string nume; // o variabila sa fie
- public:
- Persoana(string nume) { //construtor
- this->nume = nume;
- }
- virtual void Show() { // functie virtuala
- cout << nume;
- }
- };
- class Student : public Persoana { // clasa derivata 1
- private:
- string facultatea;
- public:
- Student(string nume, string facultatea) :Persoana(nume) { // construcotr clasa derivata 1
- this->facultatea = facultatea;
- }
- void Show() { // aceasta e tot o functie virtuala
- Persoana::Show(); // apelam functia de afisare din clasa de baza
- cout << " este student la " << facultatea << endl << endl;
- }
- };
- class Muncitor : public Persoana { // a doua clasa derivata
- private:
- string firma;
- public:
- Muncitor(string nume, string firma) :Persoana(nume) {// ....
- this->firma = firma;
- }
- void Show() {
- Persoana::Show(); // din nou functia de afisare din clasa de baza
- cout << " Munceste la " << firma << endl << endl;
- }
- };
- void ShowLista(list <Persoana*> test) { // asa se face afisarea
- for (list <Persoana *> ::iterator it = test.begin(); it != test.end(); it++) (*it)->Show();
- /*
- it e un iterator care primeste primul element din lista it= test.begin()
- se incrementeaza ca si i normal iar afilare se face in acest fel deoarce vrem sa folosim functia definita de noi in clsa
- si merge pana se termina elementele din lista it != test.end();
- */
- }
- int main() {
- list <Persoana *> listaPersoane; // asa se declara lista
- Persoana * oPersoana; // un pointer nu e neaprat folositor l-am folosit sa arat ce s listele eterogeene
- oPersoana = new Student("ionut", "upt"); // o lista tereogeana inseamna ca intr o lista se afla variabile de tip diferit
- listaPersoane.push_front(oPersoana); // punem in fata listei studetnul
- oPersoana = new Muncitor("Florin", "Contintal");// same acum creem un muncitor totusi
- listaPersoane.push_front(oPersoana);// punem muncitorul in fata listei
- listaPersoane.push_front(new Student("Bogdan", "UVT")); // si asta e varianta fara ace-l pointer merge si direct
- ShowLista(listaPersoane); // acum afisam lista
- // acum trebuie cautate functile din bilboteca si sa le utilizati
- system("pause");
- }
RAW Paste Data