0% found this document useful (0 votes)
27 views5 pages

1.operator + in Clasa:: Masina Masina

The document discusses various operator overloading techniques in C++ including operators like +, -, +=, ==, !, casting, function call, prefix and postfix ++, and adding objects to a vector.

Uploaded by

Aurel Aurrel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views5 pages

1.operator + in Clasa:: Masina Masina

The document discusses various operator overloading techniques in C++ including operators like +, -, +=, ==, !, casting, function call, prefix and postfix ++, and adding objects to a vector.

Uploaded by

Aurel Aurrel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

1.

operator +

In clasa:
//supraincarcare operator + pt op de forma
//m1+250f
Masina operator +(int nr) {
Masina copie = *this;
copie.pret += nr;
return copie;
}

//operator +
//de fm 250f+m1
friend Masina operator +(int nr, Masina m)
{
Masina copie = m;
copie.pret += nr;
return copie;
}

Int main:

//test op + m1+250f
m2 = m1 + 300.0f;
cout << m2 << endl;

m2 = 200.0f + m1;
cout << m2 << endl;

2. operator –

In clasa:

scade valoarea atributului anFabricatie cu valoarea lui nr


//folosit pentru a face operatii de forma: m1 - 2
Masina operator-(int nr) {
Masina copie = *this;
copie.anFabricatie -= nr;
return copie;
}

//scade din valoarea lui nr valoarea atributului anFabricatie


//folosit pentru a face operatii de forma: 2000 - m1
friend Masina operator-(float nr, Masina m) {
Masina copie = m;
copie.anFabricatie = nr - copie.anFabricatie;
return copie;
}
In main:

m2 = m1 - 20;

cout << "An fabricatie nou este = " << m2.getAnFabricatie() << endl;

cout << "Apel operator - de forma 20 + m1\n";

m2 = 20 - m1;

cout << "An fabricatie nou este = " << m2.getAnFabricatie() << endl;
3. operator +=

In clasa:
Masina operator+=(int nr) {
this->anFabricatie=this->anFabricatie + nr;
return *this;
}

In main:

M1+=10;

4. operator ==

//op == pt a ver daca 2 ob sunt egale


bool operator ==(Masina m) {
if (m.anFabricatie == this->anFabricatie && m.marca == this->marca &&
m.tipCaroserie == this->tipCaroserie && m.pret == this->pret
&& m.nrModele == this->nrModele) {
for (int i = 0; i < this->nrModele; i++) {
if (m.modele[i] == this->modele[i]) {
return true;
}
}
}
else return false;
}
In main:
if (m2 == m1) {
cout << "SUNT IDENTICE" << endl;
}
else {
cout << "NU SUNT IDENTICE" << endl;
}
5.operatpr !

In clasa:
bool operator!() {
if (this->modele != NULL) {
return false;
}
else {
return true;
}
}

In main:
if (!m5) {
cout << "m2 are atributul modele NULL\n";
}
else {
cout << "m2 are atributul modele diferit de NULL\n";
}

6. operator cast – se poate face de la int l float, dar nu si invers


explicit operator float() {
return this->nrModele;
}
apel main
cout << (float)m2 << endl;

7. op functie

Clasa:

float operator ()() {


float maxim = this->pretServicii[0];
for (int i = 1; i < this->nrServicii; i++) {
if (maxim < this->pretServicii[i]) {
maxim = this->pretServicii[i];
}
}
return maxim;
}

Int main:

8.op ++ prefixat

In clasa:
Masina& operator++()
{
//creez un vector nou de modele care sa includa si noul model
string* modeleNoi = new string[this->nrModele + 1];
//copiez modelele existente
for (int i = 0; i < this->nrModele; i++)
{
modeleNoi[i] = this->modele[i];
}
//adaug noul model
modeleNoi[this->nrModele] = "Model nou adaugat";
//actualizez numarul de modele
this->nrModele++;
if (this->modele != NULL)
{
delete[] this->modele;
}
this->modele = modeleNoi;

return *this;
}

In amin:

++m1;

9.operator ++ postfixat

In clasa:

//supraincarcarea oepratorului ++ (forma postfixata)

//Acesta va creste numarul de modele cu 1

//folosit pentru a face operatii de forma: m1++


Masina operator++(int)

Masina copie = *this;

//creez un vector nou de modele care sa includa si noul model

string* modeleNoi = new string[this->nrModele + 1];

//copiez modelele existente

for (int i = 0; i < this->nrModele; i++)

modeleNoi[i] = this->modele[i];

//adaug noul model

modeleNoi[this->nrModele] = "Model nou adaugat";

//actualizez numarul de modele

this->nrModele++;

if (this->modele != NULL)

delete[] this->modele;

this->modele = modeleNoi;

return copie;

In main:

cout << "Apel operator ++ (m1++)\n";

m1++;

cout << m1;

cout << "\n=============================\n";

10. adaugare obiect in vector

In main:

void adaugaProiect(string numeProiect, int durataProiect)


{
/*int nrProiecte;
string* Proiecte;
int* durataProiecte;*/
Programator copie = *this;
delete[]this->Proiecte;
delete[]this->durataProiecte;
this->nrProiecte++;
this->Proiecte = new string[this->nrProiecte];
for (int i = 0; i < copie.nrProiecte; i++)
{
this->Proiecte[i] = copie.Proiecte[i];
}
this->durataProiecte = new int[this->nrProiecte];
for (int i = 0; i < copie.nrProiecte; i++)
{
this->durataProiecte[i] = copie.durataProiecte[i];

}
this->Proiecte[this->nrProiecte - 1] = numeProiect;
this->durataProiecte[this->nrProiecte - 1] = durataProiect;
}

In main:

Apel:

p2.adaugaProiect("Site-Facultate", 50);
cout << p2 << endl << endl;

You might also like