0Pricing
C++ Academy · Aula

Operadores aritméticos e de comparação

Sobrecarregue +, -, *, /, ==, < e os operadores relacionados seguindo as melhores práticas

Operadores aritméticos e de comparação é uma aula grátis de C++ Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C++ Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C++ Academy inclui 4 aulas no total.

Por que Sobrecarregar Operadores?

A sobrecarga de operadores permite que seus tipos se comportem como tipos integrados — v1 + v2 é mais legível do que v1.add(v2). Utilize-a para tipos de valor, como vetores, números complexos e dinheiro.

Definindo operator+

Você pode sobrecarregar + como membro ou como função livre. Funções livres são mais simétricas.

struct Vec2 {
    double x, y;
    Vec2 operator+(const Vec2& other) const {
        return {x + other.x, y + other.y};
    }
};

Forma de Função Livre

Uma função livre dá aos dois operandos o mesmo status — útil quando uma conversão pode se aplicar a qualquer um dos lados.

Vec2 operator+(const Vec2& a, const Vec2& b) {
    return {a.x + b.x, a.y + b.y};
}

Operadores de Atribuição Composta

Implemente += primeiro; depois construa + com base nele. Esse é o padrão idiomático clássico.

Vec2& operator+=(const Vec2& other) {
    x += other.x;
    y += other.y;
    return *this;
}

Vec2 operator+(Vec2 lhs, const Vec2& rhs) {
    lhs += rhs;
    return lhs;
}

Operadores Unários

Alguns operadores são unários: -x, +x, !x, ~x, ++x, --x.

Vec2 operator-() const { return {-x, -y}; }

Incremento de Prefixo versus Pós-fixo

O prefixo não recebe nenhum parâmetro; o pós-fixo recebe um int fictício para eliminar a ambiguidade.

Counter& operator++();        // prefix
Counter  operator++(int);     // postfix

Operadores de Comparação

Operadores de comparação retornam bool. Funções livres funcionam melhor para manter a consistência.

bool operator==(const Vec2& a, const Vec2& b) {
    return a.x == b.x && a.y == b.y;
}
bool operator!=(const Vec2& a, const Vec2& b) { return !(a == b); }

Menor que para Ordenação

Se seu tipo precisar ser ordenado ou utilizado como chave de um mapa, defina operator<. Os outros operadores relacionais podem ser derivados dele.

Operadores Simétricos de Tipos Mistos

Para aceitar tanto 3 + vec quanto vec + 3, defina ambos — ou utilize uma função livre que faça a conversão.

Evite Surpresas

Operadores sobrecarregados devem se comportar de maneira intuitiva. Não redefina + para significar subtração. Siga a álgebra convencional do operador.

Operadores que não podem ser sobrecarregados

Alguns operadores estão fora de uso:

  • ?: — ternário
  • . — acesso a membro (mas -> pode ser sobrecarregado)
  • :: — resolução de escopo
  • sizeof, alignof, typeid

Verificação rápida

Qual é o padrão de implementação canônico para operator+ em um tipo definido pelo usuário?

Resumo

A sobrecarga de operadores faz com que os tipos definidos pelo usuário pareçam nativos. Implemente primeiro a atribuição composta e, depois, a aritmética simples. Os operadores de comparação funcionam melhor como funções livres. Siga as semânticas convencionais — uma surpresa é um erro.

Perguntas Frequentes

A aula “Operadores aritméticos e de comparação” é grátis?

Sim — o texto completo de “Operadores aritméticos e de comparação” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C++ Academy, atualize para CoddyKit PRO. O curso de C++ Academy inclui 4 aulas no total.

O que vou aprender em “Operadores aritméticos e de comparação”?

Sobrecarregue +, -, *, /, ==, < e os operadores relacionados seguindo as melhores práticas Você pratica C++ Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar C++ Academy?

Nenhuma experiência prévia é necessária. C++ Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Operadores aritméticos e de comparação”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de C++ Academy?

Sim. Cada aula de C++ Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Operadores aritméticos e de comparação
  2. Operadores de inserção e extração de fluxos
  3. Operadores de subscrito e chamada de função
  4. Operador de comparação de três vias no C++20
← Voltar para C++ Academy