Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.13 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <fstream>
  4.  
  5. using namespace std;
  6.  
  7. class adres{
  8. private:
  9.   string m, u, kp;
  10.   int nr;
  11. public:
  12.   adres(): m("Brak"),  u("Brak"), kp("00-000"), nr(0){};
  13.   adres(const string & mia, const string & ul, const string & k, const int & nrB): m(mia), u(ul), kp(k), nr(nrB){}; // !!! ref to obj stalego w argumentach
  14.   friend ostream & operator << (ostream &, const adres &); // zaprzyjazniony operator
  15. };
  16.  
  17. ostream & operator << (ostream & out, const adres & r){
  18.   return out << r.m << " " << r.u << " " << r.kp << " " << r.nr << endl;
  19. } // przeciazanie operatora << nie moze byc metodą
  20.  
  21.  
  22.  
  23. class osoba{
  24. private:
  25.   string im, naz;
  26.   int wiek;
  27.   adres * wsk;
  28. public:
  29.   osoba(): im("Brak"), naz("Brak"), wiek(0), wsk(new adres){};
  30.   osoba(const string & i, const string & n, const int & w, const adres & a4): im(i), naz(n), wiek(w), wsk(new adres(a4)){}; // ??
  31.   osoba(const osoba & r): im(r.im), naz(r.naz), wiek(r.wiek), wsk(new adres(*r.wsk)){}; // konstruktor kopiacy
  32.  
  33.   osoba & operator = (const osoba & r){
  34.     if(this != &r){
  35.           im = r.im;
  36.           naz = r.naz;
  37.           wiek = r.wiek;
  38.           *wsk = *r.wsk;
  39.     }// sprzawdzam identycznosc
  40.  
  41.     return *this; // zawsze zwracamy siebie
  42.   }
  43.  
  44.   friend ostream & operator << (ostream &, const osoba &);
  45.   ~osoba(){delete wsk;} // kasowac wskaznik
  46. };
  47.  
  48. ostream & operator << (ostream & out, const osoba & o){
  49.   return out << o.im << " " << o.naz << " " << o.wiek << " " << *o.wsk << endl; // friend jesli odwolanie do pola
  50. }
  51.  
  52. int main(){
  53.     adres* wsk = new adres("Czestochowa", "42-200", "Dabrowskiego", 73);
  54.     cout << *wsk << '\n';
  55.     adres a1(*wsk);
  56.     delete wsk; // !!!!!
  57.  
  58.     const adres* wsk1 = new adres("Warszawa", "00-950", "Mysliwiecka", 357);
  59.     cout << a1 << '\n';
  60.     cout << *wsk1 << '\n';
  61.     adres a2;
  62.     cout << a2 << '\n';
  63.     a2 = a1;
  64.     cout << a2 << '\n';
  65.  
  66.     osoba o("Jan", "Kos", 25, *wsk1);
  67.     delete wsk1; // !!!!!!!
  68.  
  69.    cout << o << '\n';
  70.     osoba o1(o);
  71.     cout << o1 << '\n';
  72.     osoba o2;
  73.     cout << o2 << '\n';
  74.     o2 = o1;
  75.     cout << o2 << '\n';
  76.  
  77.     return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement