Guia de Desenvolvimento Boost-4.13 Resumo

não copiável, fornece uma solução simples e clara para definir uma classe que não permite cópia, o que pode economizar muito código e tempo. Você deve sempre usar boost::noncopyable em seu formato com escopo de namespace em vez de usar uma instrução using para evitar a abertura do namespace boost em um arquivo de cabeçalho.

ignore_unused é uma pequena ferramenta que pode eliminar avisos gerados por algumas variáveis ​​​​ou definições de tipo temporariamente não utilizadas.A nomenclatura é clara, o que é benéfico para a manutenção subsequente do código.

A biblioteca opcional oferece uma ótima solução para “valores inválidos” usando semântica de contêiner. É semelhante a uma mistura de contêineres e ponteiros inteligentes e pode acomodar elementos de qualquer tipo. Ao mesmo tempo, fornece sobrecargas de operador* e operador->, que podem acessar elementos como ponteiros. Antes de usar um elemento armazenado opcional, sua validade deve ser testada.

A biblioteca de atribuição demonstra o uso "mágico" de operadores sobrecarregados de vírgula e colchetes, que é mais poderoso que a lista de inicialização do C++ 11. Usando o recurso "açúcar de sintaxe" do C++, podemos escrever códigos quase incríveis e concluir facilmente tarefas de inicialização ou atribuição que, de outra forma, exigiriam muito código. Isso é muito útil ao construir protótipos ou testar programas. A biblioteca de atribuição fornece suporte abrangente para contêineres padrão, adaptadores de contêiner e contêineres Boost, o que a torna altamente valiosa.

A troca de valores de variáveis ​​​​é uma operação aparentemente simples, mas na verdade complexa. Ela é usada para lidar com a segurança de exceções e a autoatribuição de classes. Se você deseja que sua classe seja segura e eficiente, você deve fornecer uma boa função de troca , o que é muito prático. A base da funcionalidade é claramente ilustrada pelo fato de que quase todas as classes na biblioteca Boost possuem a função de membro swap(). boost::swap é uma generalização de std::swap e pode encontrar o melhor método de troca de objetos de várias maneiras, enquanto std::swap pode fornecer apenas a troca mais geral. Se sua própria classe implementar um método de troca eficiente, boost::swap irá chamá-lo automaticamente.

Singleton é um padrão de design muito importante, que permite que uma classe tenha apenas uma instância durante todo o ciclo de vida do programa. A biblioteca Boost fornece serialization.singleton para implementar o modo singleton, que requer que o parâmetro de tipo de modelo T tenha um construtor padrão e não possa gerar exceções durante a construção e destruição. Em circunstâncias normais, esses dois requisitos são fáceis de atender. Singleton não apenas oferece suporte ao modo de parâmetro de modelo, mas também ao modo de herança e pode retornar instâncias mutáveis ​​​​ou const.

tribool implementa lógica booleana de três estados, que é tão simples e fácil de usar quanto o tipo bool integrado da linguagem. Você só precisa aprender um pouco sobre suas regras de operação para dominá-la completamente. Também discutimos suas diferenças sutis com tribool optional<bool>.

A sobrecarga de operadores simplifica a escrita de código e fornece uma sintaxe clara e fácil de entender, mas implementar a sobrecarga de operadores é uma tarefa tediosa. A biblioteca de operadores fornece muitas classes de modelo bem definidas que podem simplificar bastante a implementação da sobrecarga de operadores. Os programadores só precisam herdá-los usando a tecnologia de encadeamento de classe base e, em seguida, implementar um pequeno número de operadores necessários para obter facilmente as funções de outros operadores.

A biblioteca de operadores é poderosa e fácil de usar, mas é responsabilidade do programador garantir que os operadores tenham a semântica correta.A sobrecarga de operadores deve ser basicamente consistente com seu significado original - pelo menos não pode violar o bom senso da maioria das pessoas. Equality_comparable, less_than_comparable e totalmente_ordered são as classes sobrecarregadas de operador mais comumente usadas, que fornecem operações de comparação e são usadas para oferecer suporte a contêineres padrão. Outros operadores devem ser usados ​​com cautela e só devem ser usados ​​quando a classe tiver semântica operacional óbvia e a sobrecarga do operador puder simplificar bastante a sintaxe. Os leitores podem consultar a biblioteca de atribuição, a biblioteca de exceções, a biblioteca de formatos e a biblioteca racional. Sua sobrecarga de operadores é perfeita, mantendo uma semântica clara e natural sem causar muitas dificuldades de aprendizado de sintaxe para os usuários.

A biblioteca de exceções complementa e melhora o sistema de exceções padrão C++. Ela pode armazenar qualquer quantidade de qualquer tipo de dados em objetos de exceção, ajudando a aprimorar a capacidade de expressão das exceções. boost::exception foi projetado especificamente para não derivar de std::exception, o que o faz funcionar bem com código existente, mas é melhor usá-lo usando herança virtual. A biblioteca de exceções também possui uma série de funções auxiliares, classes e macros para nos ajudar a lidar melhor com problemas relacionados a exceções.

O componente uuid implementa a representação e processamento de UUIDs e fornece um algoritmo de geração baseado em nomes e números aleatórios para gerar identificadores globalmente exclusivos, que podem ser usados ​​em muitos lugares para identificar objetos exclusivamente. A biblioteca uuid também vem com uma implementação do algoritmo SHAl, que pode gerar resumos SHA1 para dados de qualquer comprimento.

config e bibliotecas utility_, que fornecem diversas macros muito úteis: BOOST_STRINGIZE implementa conversão de string em tempo de compilação; BOOST_STATIC_CONSTANT pode definir constantes de membros inteiros estáticos da classe; BOOST_BINARY torna conveniente escrever números binários; BOOST_CURRENT_FUNCTION pode gerar caracteres de nome de função String, que é usado pela biblioteca de exceções.

Ich denke du magst

Origin blog.csdn.net/qq_36314864/article/details/132557929
Empfohlen
Rangfolge