• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

wrproject

como funciona a funcao operator?

4 mensagens neste tópico

ola pessoal, alguem podia dar-me algumas luzes, sobre o funcionamento da funcao operator nas classes?

cumps.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A função "operator" serve para fazer operator overloading... Julgo que te referes a isso....

Imagina que tens uma classe de números complexos...

#include <iostream>

class complex
{
    //private:
    // costumo ter as variáeis sempre em private e criar funções
    // para lhes aceder para leitura... mas agora não vale a pena...
    public:
        float r;
        float i;
    
    /* ... */
    //public:
    
    complex(float real = 0, float imaginary = 0)
    {
        r = real;
        i = imaginary;
    }
        
    /* ... */
    
    // operador soma... left e right é "qual o lado em relação ao +"
    inline complex operator+(const complex &left, const complex &right)
    {
        return(complex(left.r() + righr.r()
                       left.i() + right.i()));
    }
    
    inline void print()
    {
        std::cout << "(" << r << "," << i << ")";
    }
};

int main()
{
    complex a(1, 2);
    complex b(3, 4);
    complex c = a + b;

    std::cout << a.print() << " + " << b.print() << " = " << c.print() << std::endl;

    return 0;
}

Se compilares isto e executares, deve aparecer algo como "(1,2) + (2,3) = (3,5)"

Esqueci-me de explicar, talvez, apesar de ser fácil de perceber.... A função operator, se é que se lhe pode chamar função, porque são muitas... (-, -=, +=, /..........) permite-te criar uma forma de os operadores convencionais serem reconhecidos em classes "esquisitas".... Na verdade podes usar operator-, e fazer uma soma do que está lá dentro, mas isso não terá grande piada...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

agradeco a tua ajuda, mas explicast por alto.

talvez podesses dar um exemplo mais basico, explicando duma forma mais detalhada a funcao operator, se nao t importares claro ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Este exemplo penso que será o mais básico.... Na verdade a minha resposta foi mais "o que é..." do que "como se faz..."

Se tiveres oportunidade, dá uma vista de olhos na secção "Operator Overloading" do livro "Practical C++ Programming". O livro "Thinking in C++" também faz uma análise bastante sintetizada das funções...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora