Professional Documents
Culture Documents
#include<string>
using namespace std;
class Masina
{
private:
char tipCarburant;
string model;
const int anFabricatie;
int nrKm;
int* alimentare;
int nrAlimentari;
static float pretLitruBenzina;
public:
Masina() :anFabricatie(2019)
{
this->model = "N\\A";
this->nrKm = 0;
this->alimentare = NULL;
this->nrAlimentari = 0;
}
void afisare()
{
cout << "\n*********************";
cout << "\nModel: " << this->model;
cout << ", an: " << this->anFabricatie;
cout << ", nr km: " << this->nrKm;
cout << ", nr alimentari: " << this->nrAlimentari;
cout << "\nalimentari: ";
if (this->alimentare != NULL)
{
for (int i = 0; i < this->nrAlimentari; i++)
cout << this->alimentare[i] << ", ";
}
else
cout << "-";
}
~Masina()
{
if (this->alimentare != NULL)
delete[] this->alimentare;
}
return m + nrKmSupl;
}
//pre-incrementare
Masina& operator++()
{
this->nrKm++;
return *this;
}
//post-incrementare
Masina operator++(int)
{
Masina mRez = *this;
this->nrKm++;
//returnez starea anterioara a obj
return mRez;
}
operator float()
{
int suma = 0;
for (int i = 0; i < this->nrAlimentari; i++)
suma += this->alimentare[i];
if (this->nrAlimentari != 0)
return suma / (float)this->nrAlimentari;
else
return 0;
}
string getModel()
{
return this->model;
}
int main()
{
int alimentari1[] = { 20,50,20,40 };
int alimentari2[] = { 40,20,30 };
Masina m1("Mazda", 2019, 1000, alimentari1, 4);
Masina m2;
m1 += 10; //adauga o noua alimentare in valoare de 10 la vector
//m1.operator+=(10);
cout << m1;
m2 += 5;
cout << m2;
//operator index
int alimentare = m1[1]; //m1.operator[](1)
cout << "\nAlimentarea de pe index 1: " << alimentare;
m1[0] = 25;
cout << m1;
//operator functie
int alimentareMaxima = m1(1, 3);
cout << "\nAlimentare maxima: " << alimentareMaxima;