Documente Academic
Documente Profesional
Documente Cultură
POO Curs - 5 2021
POO Curs - 5 2021
Cursul nr. 5
2021
Cursul nr. 5
Cuprins
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
către utilizator într-o manieră similară tipurilor predefinte. În acest scop se pune la
dispoziţia programatorului mecanismul de supraîncărcare a operatorilor.
➢ Limbajul C++ permite supraîncărcarea numai pentru operatorii existenţi (nu se pot
crea operatori noi).
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
+ - * / % ^
& | ~ ! && ||
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Supraîncărcarea operatorului +
class Fractie {
private:
int numarator;
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
int numitor;
public:
const Fractie operator+(const Fractie&) const;
friend const Fractie operator+(const Fractie&, const Fractie&);
};
class Fractie {
private:
int numarator;
int numitor;
public:
const Fractie operator+(const Fractie&) const;
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
class Fractie {
private:
int numarator;
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
int numitor;
public:
const Fractie operator+(const Fractie&) const;
friend const Fractie operator+(const Fractie&, const Fractie&);
Fractie& operator=(const Fractie&);
};
numarator = r.numarator;
numitor = r.numitor;
}
return *this;
}
class Fractie {
private:
int numarator;
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
int numitor;
public:
friend ostream& operator<<(ostream&, const Fractie&);
friend istream& operator>>(istream&, Fractie&);
};
un parametru.
Supraîncărcarea operatorilor de incrementare ++ / decrementare --
➢ În notație prefixată: incrementează/decrementează și apoi returnează valoarea
1. Supraîncărcarea ca funcție membru
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
NumeClasa rezultat;
………
return rezultat;
}
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
class Fractie {
private:
int numarator;
int numitor;
public:
friend Fractie& operator++(Fractie& r);
};
Fractie& operator++(Fractie& r) {
Fractie temp;
temp.numarator = r.numarator + r.numitor;
temp.numitor = r.numitor;
return temp;
}
class Fractie {
private:
int numarator;
int numitor;
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
public:
Fractie operator++(int);
};
Fractie Fractie::operator++(int) {
Fractie temp = *this;
this->numarator = this->numarator + this->numitor;
return temp;
}
class Fractie {
private:
int numarator;
int numitor;
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
public:
friend Fractie operator++(Fractie&, int);
};
#include <iostream>
using namespace std;
class Complex
{
double real;
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
double imag;
public:
Complex(double real = 0.0, double imag = 0.0);
//constructor cu parametri
Complex(const Complex&); //constructor de copiere
~Complex() { cout << "Destructor" << endl; }
//destructor
Complex operator + (const Complex&) const;
friend Complex operator + (double, const Complex&);
friend istream& operator >>(istream &, Complex&);
friend ostream& operator <<(ostream &, const Complex&);
};
Cursul nr. 5
4. Exemplu – clasa Complex
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
//constructor cu parametri
Complex::Complex(double real, double imag) : real(real),
imag(imag) {
cout << "Constructor cu parametri" << endl;
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
//constructor de copiere
Complex::Complex(const Complex& c) {
real = c.real; imag = c.imag;
cout << "Constructor de copiere" << endl;
}
Cursul nr. 5
4. Exemplu – clasa Complex
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
return temp;
}
Complex z3;
cout << "Dati nr complex z3" << endl;
cin >> z3;
cout << "z3=";
cout << z3 << endl;
Complex z4;
z4 = 5.7 + z2;
cout << "z4=";
cout << z4 << endl;
Complex c5(-6.8); // -6.8 +i*0.0
cout << c5 << endl;
c5 = z4 + z3;
cout << c5 << endl;
return 0;
Cursul nr. 5
4. Exemplu – clasa Complex
Constructor cu parametri
z1 = 0+i*0
s-a apelat operatorul <<
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
Constructor cu parametri
z2=2+i*3
s-a apelat operatorul <<
Constructor cu parametri
Dati nr complex z3
2.5 1.2
s-a apelat operatorul >>
z3=2.5+i*1.2
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Constructor cu parametri
Operatorul + fct friend ce aduna un nr real cu un nr complex
Constructor cu parametri
Constructor de copiere
Destructor
Destructor
z4=7.7+i*3
s-a apelat operatorul <<
Constructor cu parametri
-6.8+i*0
s-a apelat operatorul <<
Destructor
Destructor
Destructor
Destructor
Destructor