PUCRS
Faculdade de Informática
Programação de Software Básico



Sobrecarga de Operadores com Structs


A sobrecarga de um operador deve ser feita criando-se uma função dentro de uma struct.
Veja os exemplos abaixo.

// Define um tipo de dados novo
typedef struct PONTO{
        int x,y;
        PONTO operator+ (PONTO &v1);
        PONTO operator* (PONTO &v1);
        PONTO operator- (PONTO &v1);
        PONTO operator- ();   // menos Unário
        void operator= (int n);  // atribuicao
        void operator! (); // impressao
        void Imprime();
        } PONTO;

void PONTO::operator! ()
{
    printf("(%d,%d)", x,y);
}

void PONTO::operator= (int n)
{
       x = n;
       y = n;
}

PONTO PONTO::operator+ (PONTO &v1)
{
       PONTO temp;
       temp.x = v1.x + x;
       temp.y = v1.y + y;
       return temp;
}

PONTO PONTO::operator* (PONTO &v1)
{
       PONTO temp;
       temp.x = v1.x * x;
       temp.y = v1.y * y;
       return temp;
}

PONTO PONTO::operator- (PONTO &v1)
{
       PONTO temp;
       temp.x = x - v1.x;
       temp.y = y - v1.y;
       return temp;

}
PONTO PONTO::operator-()
{
       PONTO temp;
       temp.x = -x;
       temp.y = -y;
       return temp;

}


Exercícios


1. Crie uma struct e sobrecarregue os operadores de soma, subtração e multiplicação para variáveis do tipo PONTO descrito abaixo.
Sobrecarregue ainda os operadores de inserção (<<) e extração (>>) para operar esta struct com os objetos cin(classe istream) e cout
(classe ostream).

typedef struct 
{
    float x,y;
    void Imprime();
} PONTO;


2. Sobrecarregue o operador de inserção (<<) deve permitir a impressão das
coordenadas de um ponto na tela. Utilize o seguite protótipo para criar a sobrecarga:

    friend ostream& operator<<(ostream &Saida, circulo &c)

3. Sobrecarregue o  operador de extração (>>) deve permitir a leitura das coordenadas de um ponto a partir do teclado. Utilize o seguite protótipo para criar a sobrecarga:
       
            friend istream& operator<<(istream &Saida, circulo &c)