"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Quando é aceitável herdar de classes da biblioteca padrão C++?

Quando é aceitável herdar de classes da biblioteca padrão C++?

Publicado em 2024-11-08
Navegar:860

When is It Acceptable to Inherit from C   Standard Library Classes?

Estendendo a biblioteca C Standard por meio de herança

Embora muitas vezes se presuma que herdar de classes da biblioteca C Standard não seja desejável, há exceções notáveis .

Classes identificáveis ​​para herança

Determinar se uma classe da Biblioteca Padrão se destina à herança pode ser um desafio. No entanto, as diretrizes a seguir podem fornecer alguns insights:

  • Se a classe tiver métodos virtuais, ela é uma possível candidata à herança.
  • Declarações "amigas" excessivas indicam problemas de encapsulamento, tornando a herança menos adequado.
  • Os modelos devem ser considerados para especialização em vez de herança.
  • Mecanismos baseados em políticas, como std::char_traits, sugerem que a herança não é pretendida.

Requisitos de classe derivada

Ao herdar de classes da Biblioteca Padrão, o Princípio de Substituição de Liskov (LSP) deve ser aplicado. Comportamento observável, como a função what() em std::exception, deve corresponder à classe base. A conformidade com a Norma é menos preocupante do que a correção neste contexto.

Conclusão

Embora a própria Norma não tenha orientação explícita sobre a extensão da Biblioteca de Padrões, é crucial considere cuidadosamente o uso pretendido das classes e aplique os princípios de herança criteriosamente.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3