Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Satisfactia de a face ce iti place. tutorial, lectii online, solutii simple, exmeple, programe, C++

Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

C


Index » educatie » » informatica » C
Supraincarcarea operatorilor


Supraincarcarea operatorilor


Supraincarcarea operatorilor

Limbajul C++ permite ca actiunea operatorilor sa fie redefinita pentru noi tipuri de date. De exemplu putem defini clasa matrice, si operatorii + si * , care sa efectueze adunarea si produsul a 2 matrici. Codul care ar face adunarea intre 2 matrici ar arata exact ca si adunarea intre 2 numere:

Matrice a,b,suma,produs;

//populare a si b

suma = a + b;

produs = a * b;

Pentru a suprascrie un operator ca sa poata fi aplicat asupra claselor, trebuie sa definim functiile operator. Functiile operator sunt functii obisnuite, cu numele format din cuvantul cheie operator urmat de simbolul operatorului. De exemplu operator+().

Mai jos este prezentat un exemplu care suprascrie operatorul de adunare (+). Vom crea o clasa care stocheaza vectori bidimensionali, si vom aduna 2 vectori: a(3,1) si b(1,2). In vectorul suma rezultat, coordonata x va fi egala cu suma coordonatelor x a vectorilor operanzi, iar y - suma coordonatelor y a vectorilor operanzi. In acest caz rezultatul va fi

(3,1) + (1,2) = (3+1, 1+2) = (4, 3).

// vectori: exemplu de suprascriere a operatorului +

#include<iostream>

#include<conio.h>

using namespace std;

class Vector ;

Vector (int,int);

Vector operator + (Vector);

};

Vector::Vector (int x, int y)

Vector Vector::operator+ (Vector param)

int main ()

(4,3)

Metoda operator+ din clasa Vector realizeaza suprascrierea operatorului de adunare (+). Aceasta metoda poate fi apelata atat implicit folosind simbolul +, cat si explicit, folosind numele functiei:

c = a + b;

c = a.operator+ (b);

Ambele expresii sunt echivalente.

Functiile operator pot fi definite atat ca metode membre (ca in exemplul de mai sus) cat si sub forma de functii globale. In cazul in care sunt definite ca metode, operandul din stanga va fi obiectul pentru care este apelata functia operator, iar operandul din dreapta va fi transmis ca parametru. In cazul in care functia operator este globala, aceasta va avea 2 parametri reprezentand cei doi operanzi. si operatorii unari, gen ++, pot fi suprascrisi.



In tabelul de mai jos este prezentat modul cum pot fi declarate diverse functii operator (Inlocuiti @ cu operatorul in fiecare caz):

Expresie

Operator

Metoda

Functie globala

@a

+ - * & ! ~ ++ --

A::operator@()

operator@(A)

a@

++ --

A::operator@(int)

operator@(A,int)

a@b

+ - * / % ^ & | < > == != <= >= << >> && || ,

A::operator@ (B)

operator@(A,B)

a@b

= += -= *= /= %= ^= &= |= <<= >>= []

A::operator@ (B)

-






Politica de confidentialitate
C


Access
Adobe photoshop
Autocad
Baze de date
C
Calculatoare
Corel draw
Excel
Foxpro
Html
Internet
Java
Linux
Mathcad
Matlab
Outlook
Pascal
Php
Powerpoint
Retele calculatoare
Sql
Windows
Word

Destructori
DECLARATII SI CONSTANTE
EXPRESII SI INSTRUCTIUNI
Supraincarcarea functiilor
Supraincarcarea operatorilor
Functii prietene















 
Copyright © 2019 - Toate drepturile rezervate