Advertisement
Guest User

Untitled

a guest
Dec 7th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.45 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. class adres
  7. {
  8. private:
  9.     string mMiasto;
  10.     string mKodPocztowy;
  11.     string mUlica;
  12.     size_t mNumerDomu;
  13.  
  14. public:
  15.     //
  16.     adres() : mMiasto("-"), mKodPocztowy("-"), mUlica("-"), mNumerDomu(0){};
  17.  
  18.     adres(const string &miasto, const string &kod, const string &ulica, size_t numer)
  19.         : mMiasto(miasto), mKodPocztowy(kod), mUlica(ulica), mNumerDomu(numer){};
  20.  
  21.     adres(const adres &adr)
  22.         : mMiasto(adr.mMiasto), mKodPocztowy(adr.mKodPocztowy), mUlica(adr.mUlica), mNumerDomu(adr.mNumerDomu){};
  23.  
  24.     //
  25.     string &Miasto() { return mMiasto; };
  26.     const string &Miasto() const { return mMiasto; };
  27.  
  28.     string &KodPocztowy() { return mKodPocztowy; };
  29.     const string &KodPocztowy() const { return mKodPocztowy; };
  30.  
  31.     string &Ulica() { return mUlica; };
  32.     const string &Ulica() const { return mUlica; };
  33.  
  34.     size_t &NumerDomu() { return mNumerDomu; };
  35.     const size_t &NumerDomu() const { return mNumerDomu; };
  36.  
  37.     //
  38.     friend ostream &operator<<(ostream &ostr, const adres &adr);
  39. };
  40.  
  41. class osoba
  42. {
  43. private:
  44.     string mImie;
  45.     string mNazwisko;
  46.     size_t mWiek;
  47.     adres *mAdres;
  48.  
  49. public:
  50.     //
  51.     osoba() : mImie("-"), mNazwisko("-"), mWiek(0), mAdres(new adres){};
  52.     osoba(const string &imie, const string &nazwisko, size_t wiek, const adres &adr)
  53.         : mImie(imie), mNazwisko(nazwisko), mWiek(wiek), mAdres(new adres(adr)){};
  54.     osoba(const osoba &o) : mImie(o.mImie), mNazwisko(o.mNazwisko), mWiek(o.mWiek), mAdres(new adres(*(o.mAdres))){};
  55.     ~osoba() { delete mAdres; };
  56.  
  57.     //
  58.     string &Imie() { return mImie; };
  59.     const string &Imie() const { return mImie; };
  60.  
  61.     string &Nazwisko() { return mNazwisko; };
  62.     const string &Nazwisko() const { return mNazwisko; };
  63.  
  64.     size_t &Wiek() { return mWiek; };
  65.     const size_t &Wiek() const { return mWiek; };
  66.  
  67.     adres *Adres() { return mAdres; };
  68.     const adres *Adres() const { return mAdres; };
  69.  
  70.     //
  71.     friend ostream &operator<<(ostream &ostr, const osoba &o);
  72.     osoba &operator=(const osoba &o);
  73. };
  74.  
  75. ostream &operator<<(ostream &ostr, const adres &adr)
  76. {
  77.     ostr << adr.mUlica << " " << adr.mNumerDomu << "\n"
  78.          << adr.mKodPocztowy << " " << adr.mMiasto << "\n";
  79.  
  80.     return ostr;
  81. }
  82.  
  83. ostream &operator<<(ostream &ostr, const osoba &o)
  84. {
  85.     ostr << o.mImie << " " << o.mNazwisko << ", " << o.mWiek << '\n'
  86.          << o.mAdres->Ulica() << " " << o.mAdres->NumerDomu() << '\n'
  87.          << o.mAdres->KodPocztowy() << " " << o.mAdres->Miasto() << '\n';
  88.  
  89.     return ostr;
  90. }
  91.  
  92. osoba &osoba::operator=(const osoba &o)
  93. {
  94.     if (this != &o)
  95.     {
  96.         delete mAdres;
  97.  
  98.         mImie = o.mImie;
  99.         mNazwisko = o.mNazwisko;
  100.         mWiek = o.mWiek;
  101.         mAdres = new adres(*(o.mAdres));
  102.     }
  103.  
  104.     return *this;
  105. }
  106.  
  107. int main(int argc, char const *argv[])
  108. {
  109.     adres *wsk = new adres("Czestochowa", "42-200", "Dabrowskiego", 73);
  110.     cout << *wsk << '\n';
  111.  
  112.     adres a1(*wsk);
  113.     delete wsk;
  114.  
  115.     const adres *wsk1 = new adres("Warszawa", "00-950", "Mysliwiecka", 357);
  116.     cout << a1 << '\n';
  117.     cout << *wsk1 << '\n';
  118.     adres a2;
  119.     cout << a2 << '\n';
  120.     a2 = a1;
  121.     cout << a2 << '\n';
  122.  
  123.     osoba o("Jan", "Kos", 25, *wsk1);
  124.  
  125.     delete wsk1;
  126.  
  127.     cout << o << '\n';
  128.     osoba o1(o);
  129.     cout << o1 << '\n';
  130.     osoba o2;
  131.     cout << o2 << '\n';
  132.     o2 = o1;
  133.     cout << o2 << '\n';
  134.  
  135.     return 0;
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement