Advertisement
adwas33

Untitled

May 25th, 2021
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.31 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. template<class T>
  5. ostream &operator<<(ostream &os, vector<T> &pracownik)
  6. {
  7. for(auto &kazdy:pracownik)
  8. {
  9. os<<kazdy<<endl;
  10. }
  11. }
  12. template <class T>
  13. ostream &operator<<(ostream &os, vector<T*> pracownik)
  14. {
  15. for(auto &kazdy:pracownik)
  16. {
  17. os<<*kazdy<<endl;
  18. }
  19. }
  20.  
  21.  
  22. class Pracownik{
  23. protected:
  24. const double pensja_minimalna=2061.67;
  25. string imie,nazwisko;
  26. static int licznik;
  27. public:
  28. Pracownik(){licznik++;imie="Jan";nazwisko="Kowalski";};
  29. ~Pracownik(){cout<<"Zmniejszam licznik czyli usuwam pracownika"<<licznik<<endl;
  30. licznik--;}
  31.  
  32. public:
  33. Pracownik(const string imie, const string nazwisko);
  34.  
  35. friend ostream &operator<<(ostream &os, const Pracownik &pracownik);;
  36.  
  37. };
  38. int Pracownik::licznik=0;
  39.  
  40. ostream &operator<<(ostream &os, const Pracownik &pracownik) {
  41. os << "pensja_minimalna: " << pracownik.pensja_minimalna << " imie: " << pracownik.imie << " nazwisko: "
  42. << pracownik.nazwisko;
  43. return os;
  44. }
  45.  
  46. Pracownik::Pracownik(const string imie, const string nazwisko) : imie(imie), nazwisko(nazwisko) {licznik++;}
  47.  
  48. class Informatyk : protected Pracownik
  49. {
  50. public:
  51. Informatyk(const string imie, const string nazwisko, const string jezykProgramowania, double przelicznik)
  52. : Pracownik(imie, nazwisko), jezyk_programowania(jezykProgramowania), przelicznik(przelicznik) {licznik++;}
  53.  
  54. Informatyk() {jezyk_programowania="Java"; przelicznik=15.5;}
  55.  
  56. Informatyk(Informatyk &Inf) {
  57. imie=Inf.imie;
  58. nazwisko=Inf.nazwisko;
  59. przelicznik=Inf.przelicznik/2;
  60. jezyk_programowania="C++";
  61. }
  62.  
  63. friend ostream &operator<<(ostream &os, const Informatyk &informatyk) {
  64. os << static_cast<const Pracownik &>(informatyk) << " jezyk_programowania: " << informatyk.jezyk_programowania
  65. << " Pensja : " << informatyk.przelicznik*informatyk.pensja_minimalna;
  66. return os;
  67. }
  68.  
  69. private:
  70. string jezyk_programowania;
  71. double przelicznik;
  72.  
  73. };
  74. class Dyrektor : protected Pracownik {
  75. public:
  76. Dyrektor(const string imie, const string nazwisko, const string specjalizacja, double przelicznik) : Pracownik(
  77. imie, nazwisko), specjalizacja(specjalizacja), przelicznik(przelicznik) {licznik++;}
  78.  
  79. friend ostream &operator<<(ostream &os, const Dyrektor &dyrektor) {
  80. os << static_cast<const Pracownik &>(dyrektor) << " specjalizacja: " << dyrektor.specjalizacja
  81. << " Pensja : " << dyrektor.przelicznik*dyrektor.pensja_minimalna;
  82. return os;
  83. }
  84.  
  85. private:
  86. string specjalizacja;
  87. double przelicznik;
  88. };
  89.  
  90.  
  91. int main() {
  92. Pracownik pierwszy;
  93. Pracownik drugi("Adam","Wasylewicz");
  94. cout<<pierwszy<<endl<<drugi<<endl;
  95. Informatyk informatyk;
  96. Informatyk kopiowany(informatyk);
  97. cout<<informatyk<<endl<<kopiowany;
  98. Dyrektor boss("Dawid","Kowalczyk","ArchitektIT",22);
  99. Pracownik *nowy=&informatyk;
  100. vector<Pracownik*> wskazniki(3);
  101. wskazniki[0]=&pierwszy;
  102. Pracownik *wskaz_na_informatyka;
  103. wskaz_na_informatyka = &informatyk;
  104. wskazniki[1]=dynamic_cast<Pracownik*>(&boss);
  105. wskazniki[2]=dynamic_cast<Pracownik*>(&informatyk);
  106.  
  107. std::cout << "Hello, World!" << std::endl;
  108. return 0;
  109. }
  110.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement