Documente Academic
Documente Profesional
Documente Cultură
AL REPUBLICII MOLDOVA
Universitatea Tehnică a Moldovei
Facultatea Calculatoare, Informatică şi Microelectronică
Departamentul Microelectronică si Inginerie Biomedicală
Raport
pentru lucrarea de laborator Nr.3
Verificat:
Barîmb Eusebiu, asistent universitar,
Departamentul Microelectronică si Inginerie Biomedicală,
Facultatea FCIM, UTM
Chișinău – 2022
1
CUPRINS
Scopul lucrării:..........................................................................................................................3
Sarcina lucrării:.........................................................................................................................3
Problema 1.................................................................................................................................4
Anexă........................................................................................................................................9
Concluzia:................................................................................................................................11
Bibliografia..............................................................................................................................12
2
Tema: Supraîncărcarea operatorilor
1. Scopul lucrării:
• Studierea necesităţii supraîncărcării operatorilor;
• Studierea sintaxei de definire a operatorilor;
• Studierea tipurilor de operatori;
• Studierea formelor de supraîncărcare;
Teoria principala
Clasa este un tip de date, similar cu struct, care conține atât câmpuri de tip dată
(numite proprietăți), cât și câmpuri de tip funcție (numite și metode). Câmpurile clasei
(proprietăți sau metode) se mai numesc membri ai clasei. Astfel avem, date
membre și funcții membre.
Obiectul reprezintă o dată de tipul clasei – de exemplu o variabilă. Declararea unei variabile
de acest tip se mai numește instanțiere a clasei. Spunem că obiectul este o instanță a clasei.
Pentru membrii unei clase (date sau metode) se precizează anumite caracteristici,
numite modificatori (specificatori) de acces, care stabilesc cum se face accesul la acestea:
0 – pentru False
1 – pentru True
3
Codul Programului:
#include<iostream>
using namespace std;
class Complex{ public: Complex();
Complex(int x);
Complex(int x, int y);
friend Complex operator+(Complex a, Complex b);
friend Complex operator-(Complex a, Complex b);
friend Complex operator+(Complex a, double b);
friend Complex operator-(Complex a, double b);
friend Complex operator*(Complex a, Complex b);
friend Complex operator*(Complex a, double b);
friend Complex operator/(Complex a, Complex b);
Complex operator++();
Complex operator--();
bool operator == (Complex a);
void show(); private: double x, y;
};
void Complex::show(){
cout << this->x <<"+" <<this->y<<"i"<<endl;
}
Complex::Complex(){ this->x = 0; this->y = 0;
}
Complex::Complex(int x){ this->x=x; this->y=0;
}
Complex::Complex(int x, int y){ this->x=x; this->y=y;
}
Complex operator+(Complex a, Complex b){
Complex c;
4
c.x=a.x+b.x ; c.y=a.y+b.y; return(c);
}
Complex operator-(Complex a, Complex b){
Complex c;
c.x=a.x-b.x ; c.y=a.y-b.y; return(c);
}
Complex operator+(Complex a, double b){
Complex c;
c.x=a.x+b ; c.y=a.y; return(c);
}
Complex operator*(Complex a, Complex b){
Complex c;
c.x=(a.x*b.x)-(a.y*b.y);
c.y=(a.x*b.y)+(a.y*b.x); return c;
}
Complex operator*(Complex a, double b){
Complex c; c.x=a.x*b;
c.y=a.y*b; return c;
}
Complex operator/(Complex a, Complex b){
Complex c;
c.x=((a.x*b.x)+(a.y*b.y))/((b.x*b.x)+(b.y*b.y));
c.y=((b.x*a.y)-(a.x*b.y))/((b.x*b.x)+(b.y*b.y));
return c;
}
Complex Complex::operator++(){
Complex c;
c.x=this->x+1;
c.y=this->y+1; return c;
5
}
Complex Complex::operator--(){
Complex c;
c.x=this->x-1;
c.y=this->y-1; return c;
}
bool Complex::operator==(Complex a){
if((this->x == a.x)&&(this->y == a.y))
return true;
else
{
return false;
}
}
int main(void){
Complex c1,c2,c3,c4;
c1=Complex(2);
c2=Complex(3,4);
c1.show();
c2.show();
c3=c1+c2;
c3.show();
c4= c1+3.2;
c4.show();
c4=c2-c1;
c4.show();
c4=++c4;
c4.show();
if(c1 == c2){
6
cout <<"sunt egale";
}
else cout <<"c1 si c2 nu sunt egale"<<endl;
c4.show();
return 0;
}
Figura1.Afisarea
7
CONCLUZIA
Operatorul () este apelul unei functii, iar operatorul [] este operatorul de indexare.
8
BIBLIOGRAFIA
Sursa [online]. [accesat la data de 1/11/2022] Disponibil: