Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- template<class T>
- ostream &operator<<(ostream &os, vector<T> &pracownik)
- {
- for(auto &kazdy:pracownik)
- {
- os<<kazdy<<endl;
- }
- }
- template <class T>
- ostream &operator<<(ostream &os, vector<T*> pracownik)
- {
- for(auto &kazdy:pracownik)
- {
- os<<*kazdy<<endl;
- }
- }
- class Pracownik{
- protected:
- const double pensja_minimalna=2061.67;
- string imie,nazwisko;
- static int licznik;
- public:
- Pracownik(){licznik++;imie="Jan";nazwisko="Kowalski";};
- ~Pracownik(){cout<<"Zmniejszam licznik czyli usuwam pracownika"<<licznik<<endl;
- licznik--;}
- public:
- Pracownik(const string imie, const string nazwisko);
- friend ostream &operator<<(ostream &os, const Pracownik &pracownik);;
- };
- int Pracownik::licznik=0;
- ostream &operator<<(ostream &os, const Pracownik &pracownik) {
- os << "pensja_minimalna: " << pracownik.pensja_minimalna << " imie: " << pracownik.imie << " nazwisko: "
- << pracownik.nazwisko;
- return os;
- }
- Pracownik::Pracownik(const string imie, const string nazwisko) : imie(imie), nazwisko(nazwisko) {licznik++;}
- class Informatyk : protected Pracownik
- {
- public:
- Informatyk(const string imie, const string nazwisko, const string jezykProgramowania, double przelicznik)
- : Pracownik(imie, nazwisko), jezyk_programowania(jezykProgramowania), przelicznik(przelicznik) {licznik++;}
- Informatyk() {jezyk_programowania="Java"; przelicznik=15.5;}
- Informatyk(Informatyk &Inf) {
- imie=Inf.imie;
- nazwisko=Inf.nazwisko;
- przelicznik=Inf.przelicznik/2;
- jezyk_programowania="C++";
- }
- friend ostream &operator<<(ostream &os, const Informatyk &informatyk) {
- os << static_cast<const Pracownik &>(informatyk) << " jezyk_programowania: " << informatyk.jezyk_programowania
- << " Pensja : " << informatyk.przelicznik*informatyk.pensja_minimalna;
- return os;
- }
- private:
- string jezyk_programowania;
- double przelicznik;
- };
- class Dyrektor : protected Pracownik {
- public:
- Dyrektor(const string imie, const string nazwisko, const string specjalizacja, double przelicznik) : Pracownik(
- imie, nazwisko), specjalizacja(specjalizacja), przelicznik(przelicznik) {licznik++;}
- friend ostream &operator<<(ostream &os, const Dyrektor &dyrektor) {
- os << static_cast<const Pracownik &>(dyrektor) << " specjalizacja: " << dyrektor.specjalizacja
- << " Pensja : " << dyrektor.przelicznik*dyrektor.pensja_minimalna;
- return os;
- }
- private:
- string specjalizacja;
- double przelicznik;
- };
- int main() {
- Pracownik pierwszy;
- Pracownik drugi("Adam","Wasylewicz");
- cout<<pierwszy<<endl<<drugi<<endl;
- Informatyk informatyk;
- Informatyk kopiowany(informatyk);
- cout<<informatyk<<endl<<kopiowany;
- Dyrektor boss("Dawid","Kowalczyk","ArchitektIT",22);
- Pracownik *nowy=&informatyk;
- vector<Pracownik*> wskazniki(3);
- wskazniki[0]=&pierwszy;
- Pracownik *wskaz_na_informatyka;
- wskaz_na_informatyka = &informatyk;
- wskazniki[1]=dynamic_cast<Pracownik*>(&boss);
- wskazniki[2]=dynamic_cast<Pracownik*>(&informatyk);
- std::cout << "Hello, World!" << std::endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement