Você está na página 1de 1

Sobrecarga de operadores

Tipo de operador

Forma reduz. de inv. Mtodo

Funo Global

Unrio prefixado

a.operator( )

operator(a)

Unrio sufixado

a.operator( int)

operator(a, int)

Binrio

ab

a.operator( b)

operator(a, b)

Operador Afectao a = b
a.operator=( b)
------------Legenda: smbolo da operao; a objecto receptor; b operando direito nos op. bin.
Exemplo: (sobrecarga dos operadores +, = e *)
Se o operador + estivesse tambm implementado
class T{ int x;
como funo global, continuaria a ser
public: T(int v){x=v;}
invocadada a funo membro da classe T
int get()const{return x;}
T operator+(const T &outro)const{T t(x+outro.x); return t;}
T &operator=(const T &outro){x=outro.x; return *this;}
};
T operator*(const T &t1, const T &t2){T t(t1.get()*t2.get()); return t;}
void main(){
equivalente
T a(10), b(15), c(0);
c=a+b; //forma abreviada de invocar o
cout<<c.get()<<endl;
c=a*b; //forma abreviada de
invocar a
equivalente
cout<<c.get()<<endl;
};

a c=a.operator+(b);
por sua vez equivalente a
c.operator=(a.operator+(b))
mtodo
operator+(T) da classe T
global operator*(T, T)
afuno
c=operator*(a,b);
por sua vez equivalente a
c.operator=(operator*(a,b))

Você também pode gostar