rendered paste body#include <iostream>
#include <cstring>
using namespace std;
class Korisnik
{
private:
char *ime;
int pretplata;
int minuti;
public:
Korisnik(char *i="",int pret=0,int min=0)
{
ime=new char[strlen(i)+1];
strcpy(ime,i);
pretplata=pret;
minuti=min;
}
virtual ~Korisnik()
{
delete []ime;
}
virtual float Smetka() = 0;
char* ZemiIme()
{
return ime;
}
Korisnik& operator+=(int m)
{
minuti+=m;
return *this;
}
Korisnik& operator=(const Korisnik &k)
{
if (&k!=this)
{
delete []ime;
ime=new char[strlen(k.ime)+1];
strcpy(ime,k.ime);
pretplata=k.pretplata;
minuti=k.minuti;
}
return *this;
}
Korisnik& operator++()
{
minuti++;
return *this;
}
Korisnik operator++(int)
{
Korisnik tmp(*this);
minuti++;
return tmp;
}
};
float Korisnik::Smetka()
{
return pretplata+minuti;
}
class FizickoLice: public Korisnik
{
private:
int dopolna;
public:
FizickoLice(char *i="",int pret=0,int min=0,int dop=0):Korisnik(i,pret,min)
{
dopolna=dop;
}
float Smetka()
{
return Korisnik::Smetka()+dopolna;
}
};
class PravnoLice:public Korisnik
{
private:
float koeficient;
public:
PravnoLice(char *i="",int pret=0,int min=0,int koef=0.0):Korisnik(i,pret,min)
{
koeficient=koef;
}
float Smetka()
{
return Korisnik::Smetka()*koeficient;
}
};
void PecatiSmetka(Korisnik &k)
{
cout<<k.ZemiIme()<<k.Smetka();
}
bool operator<(Korisnik &k1, Korisnik &k2)
{
return (k1.Smetka()<k2.Smetka());
}
int main()
{
FizickoLice p("Viktor",1,1,1);
p+=1;
PecatiSmetka(p);
return 0;
}