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); // postfixOperadores 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 escoposizeof,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
- Operadores aritméticos e de comparação
- Operadores de inserção e extração de fluxos
- Operadores de subscrito e chamada de função
- Operador de comparação de três vias no C++20