Junior
O que é a sobrescrição (override) em C++?
sobes.tech IA
Resposta da IA
A sobrescrita (override) é um mecanismo na programação orientada a objetos, onde uma classe derivada fornece a sua própria implementação específica de uma função virtual declarada na classe base. Quando essa função é chamada através de um ponteiro ou referência à classe base, a implementação do tipo real do objeto (derivado ou base) será executada, dependendo de ter sido sobrescrita.
Pontos principais:
- Aplica-se apenas a funções ** virtuais**.
- A assinatura (nome, tipo de retorno, tipos e quantidade de parâmetros) da função que sobrescreve na classe derivada deve coincidir exatamente com a assinatura da função que está sendo sobrescrita na classe base.
- A palavra-chave
override(a partir do C++11) é usada para indicar explicitamente a intenção de sobrescrever uma função. O compilador verificará se a função da classe base realmente existe com essa assinatura e gerará um erro se não existir. Isso ajuda a evitar erros de digitação e torna o código mais legível.
Exemplo:
class Base {
public:
virtual void print() {
// Implementação da classe base
// ...
}
virtual void display(int x) const {
// Outra função virtual
// ...
}
};
class Derived : public Base {
public:
// Sobrescrita da função print de Base
void print() override {
// Implementação específica para Derived
// ...
}
// Isto não é uma sobrescrita, pois falta const
/*
void display(int x) {
// Erro de compilação com override
// ...
}
*/
// Sobrescrita correta da função display de Base
void display(int x) const override {
// Implementação específica para Derived
// ...
}
};