Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- using namespace std;
- class adres
- {
- private:
- string mMiasto;
- string mKodPocztowy;
- string mUlica;
- size_t mNumerDomu;
- public:
- //
- adres() : mMiasto("-"), mKodPocztowy("-"), mUlica("-"), mNumerDomu(0){};
- adres(const string &miasto, const string &kod, const string &ulica, size_t numer)
- : mMiasto(miasto), mKodPocztowy(kod), mUlica(ulica), mNumerDomu(numer){};
- adres(const adres &adr)
- : mMiasto(adr.mMiasto), mKodPocztowy(adr.mKodPocztowy), mUlica(adr.mUlica), mNumerDomu(adr.mNumerDomu){};
- //
- string &Miasto() { return mMiasto; };
- const string &Miasto() const { return mMiasto; };
- string &KodPocztowy() { return mKodPocztowy; };
- const string &KodPocztowy() const { return mKodPocztowy; };
- string &Ulica() { return mUlica; };
- const string &Ulica() const { return mUlica; };
- size_t &NumerDomu() { return mNumerDomu; };
- const size_t &NumerDomu() const { return mNumerDomu; };
- //
- friend ostream &operator<<(ostream &ostr, const adres &adr);
- };
- class osoba
- {
- private:
- string mImie;
- string mNazwisko;
- size_t mWiek;
- adres *mAdres;
- public:
- //
- osoba() : mImie("-"), mNazwisko("-"), mWiek(0), mAdres(new adres){};
- osoba(const string &imie, const string &nazwisko, size_t wiek, const adres &adr)
- : mImie(imie), mNazwisko(nazwisko), mWiek(wiek), mAdres(new adres(adr)){};
- osoba(const osoba &o) : mImie(o.mImie), mNazwisko(o.mNazwisko), mWiek(o.mWiek), mAdres(new adres(*(o.mAdres))){};
- ~osoba() { delete mAdres; };
- //
- string &Imie() { return mImie; };
- const string &Imie() const { return mImie; };
- string &Nazwisko() { return mNazwisko; };
- const string &Nazwisko() const { return mNazwisko; };
- size_t &Wiek() { return mWiek; };
- const size_t &Wiek() const { return mWiek; };
- adres *Adres() { return mAdres; };
- const adres *Adres() const { return mAdres; };
- //
- friend ostream &operator<<(ostream &ostr, const osoba &o);
- osoba &operator=(const osoba &o);
- };
- ostream &operator<<(ostream &ostr, const adres &adr)
- {
- ostr << adr.mUlica << " " << adr.mNumerDomu << "\n"
- << adr.mKodPocztowy << " " << adr.mMiasto << "\n";
- return ostr;
- }
- ostream &operator<<(ostream &ostr, const osoba &o)
- {
- ostr << o.mImie << " " << o.mNazwisko << ", " << o.mWiek << '\n'
- << o.mAdres->Ulica() << " " << o.mAdres->NumerDomu() << '\n'
- << o.mAdres->KodPocztowy() << " " << o.mAdres->Miasto() << '\n';
- return ostr;
- }
- osoba &osoba::operator=(const osoba &o)
- {
- if (this != &o)
- {
- delete mAdres;
- mImie = o.mImie;
- mNazwisko = o.mNazwisko;
- mWiek = o.mWiek;
- mAdres = new adres(*(o.mAdres));
- }
- return *this;
- }
- int main(int argc, char const *argv[])
- {
- adres *wsk = new adres("Czestochowa", "42-200", "Dabrowskiego", 73);
- cout << *wsk << '\n';
- adres a1(*wsk);
- delete wsk;
- const adres *wsk1 = new adres("Warszawa", "00-950", "Mysliwiecka", 357);
- cout << a1 << '\n';
- cout << *wsk1 << '\n';
- adres a2;
- cout << a2 << '\n';
- a2 = a1;
- cout << a2 << '\n';
- osoba o("Jan", "Kos", 25, *wsk1);
- delete wsk1;
- cout << o << '\n';
- osoba o1(o);
- cout << o1 << '\n';
- osoba o2;
- cout << o2 << '\n';
- o2 = o1;
- cout << o2 << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement