Middle+
O que é herança virtual?
sobes.tech IA
Resposta da IA
A herança virtual é uma forma de herança em C++ que permite evitar problemas de "herança em diamante" (diamond problem), quando uma mesma classe base é herdada indiretamente por várias rotas. Com herança virtual, a classe base comum existirá numa única instância no objeto da classe final.
Vantagens:
- Evitar a duplicação de dados e funções da classe base comum.
- Fornecer uma fonte única para aceder aos membros da classe base virtual.
Desvantagens:
- Complica a construção de objetos e o acesso às classes base virtuais (através de ponteiros ou deslocamentos "indiretos").
- Pequena redução de desempenho ao aceder aos membros da classe base virtual devido à necessidade de resolver deslocamentos em tempo de execução.
- Restrições ao uso de classes base virtuais em certos contextos (por exemplo, na inicialização estática).
Aplica-se ao declarar uma classe base usando a palavra-chave virtual.
class Base {
public:
int data;
};
class Derived1 : virtual public Base { // Herança virtual
};
class Derived2 : virtual public Base { // Herança virtual
};
class Final : public Derived1, public Derived2 { // Herança em diamante
};
// No objeto da classe Final, haverá apenas uma instância de Base::data