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;