#include <iostream>
using namespace std;
enum kolor {czarny,czerwony,niebieski,bialy};
class pojazd
{
protected:
int ilosc_kol;
public:
pojazd(int ile) : ilosc_kol(ile) {}
pojazd(const pojazd &);
pojazd & operator=(const pojazd & wz);
};
class automobil : public pojazd
{
int stan_licznika;
kolor kolor_karoserii;
public:
automobil(int kola, kolor k, int licznik) : pojazd(kola)
{
stan_licznika = licznik;
kolor_karoserii = k;
}
automobil(const automobil &);
automobil & operator=(const automobil &ww);
friend ostream & operator <<(ostream & ekran, const automobil & obj);
};
pojazd::pojazd(const pojazd & wzor)
{
ilosc_kol = wzor.ilosc_kol;
}
automobil::automobil(const automobil & wzorzec) : pojazd(wzorzec)
{
stan_licznika = 0;
kolor_karoserii = wzorzec.kolor_karoserii;
}
pojazd & pojazd::operator=(const pojazd & wz)
{
ilosc_kol = wz.ilosc_kol;
return *this;
}
automobil & automobil::operator=(const automobil & wzor)
{
// 1 sposob:
(*this).pojazd::operator=(wzor);
// 2 sposob:
pojazd *wskpojazd = this;
(*wskpojazd) = wzor;
// 3 sposob:
pojazd & refpojazd = *this;
refpojazd = wzor;
// dalsza czesc operatora przypisania
kolor_karoserii = wzor.kolor_karoserii;
stan_licznika = wzor.stan_licznika + 2;
return *this;
}
ostream & operator<<(ostream & ekran, const automobil & obj)
{
ekran << " Liczba kol " << obj.ilosc_kol
<< ", Licznika " << obj.stan_licznika
<< ", kolor nr" << obj.kolor_karoserii << endl;
return ekran;
}
Jakby wyglądała ta częśc kodu:
automobil & automobil::operator=(const automobil & wzor)
{
// 1 sposob:
(*this).pojazd::operator=(wzor);
// 2 sposob:
pojazd *wskpojazd = this;
(*wskpojazd) = wzor;
// 3 sposob:
pojazd & refpojazd = *this;
refpojazd = wzor;
// dalsza czesc operatora przypisania
kolor_karoserii = wzor.kolor_karoserii;
stan_licznika = wzor.stan_licznika + 2;
return *this;
}
jeśli w klasie automobil byłby np.obiekt klasy drzwi ?