C ++ mais eficaz (Scott Meyers) Ainda mais regras práticas que C ++ eficaz . Não é tão importante quanto os do primeiro livro, mas ainda é bom saber.
C ++ excepcional (Herb Sutter) Apresentado como um conjunto de quebra-cabeças, este possui uma das melhores e minuciosas discussões sobre o gerenciamento adequado de recursos e a segurança de exceções no C ++ através da aquisição de recursos é inicialização (RAII), além da cobertura detalhada de uma variedade de outros tópicos, incluindo o idioma pimpl, pesquisa de nome, bom design de classe e o modelo de memória C ++. [Reveja]
C ++ mais excepcional (Herb Sutter) Abrange tópicos adicionais de segurança de exceção não abordados no C ++ excepcional , além de discussão sobre programação orientada a objetos eficaz em C ++ e uso correto do STL. [Reveja]
Estilo excepcional em C ++ (Herb Sutter) Discute programação genérica, otimização e gerenciamento de recursos; este livro também apresenta uma excelente exposição de como escrever código modular em C ++ usando funções que não são membros e o princípio de responsabilidade única. [Reveja]
Padrões de codificação C ++ (Herb Sutter e Andrei Alexandrescu) “Padrões de codificação” aqui não significam “quantos espaços devo recuar no meu código?” Este livro contém 101 práticas recomendadas, idiomas e armadilhas comuns que podem ajudá-lo a escrever código C ++ correto, compreensível e eficiente. [Reveja]
Modelos C ++: o guia completo (David Vandevoorde e Nicolai M. Josuttis) Este é o livro sobre modelos como eles existiam antes do C ++ 11. Ele cobre tudo, desde o básico até algumas das mais avançadas metaprogramações de modelos e explica todos os detalhes de como os modelos funcionam (conceitualmente e como são implementados) e discute muitas armadilhas comuns. Possui excelentes resumos da regra de definição única (ODR) e resolução de sobrecarga nos apêndices. Uma segunda edição que cobre C ++ 11, C ++ 14 e C ++ 17 já foi publicada. [Reveja]
C ++ 17 - O guia completo (Nicolai M. Josuttis) Este livro descreve todos os novos recursos introduzidos no C ++ 17 Standard, cobrindo tudo, desde os mais simples como 'Inline Variables', 'constexpr if' até 'Polymorphic Recursos de memória 'e' Novo e excluir com dados superalinhados '.
Design moderno em C ++ (Andrei Alexandrescu) Um livro inovador sobre técnicas avançadas de programação genérica. Apresenta design baseado em políticas, listas de tipos e idiomas fundamentais de programação genérica e explica quantos padrões de design úteis (incluindo alocadores de objetos pequenos, functores, fábricas, visitantes e multi-métodos) podem ser implementados de forma eficiente, modular e limpa usando programação genérica . [Reveja]
Metaprogramação de modelos C ++ (David Abrahams e Aleksey Gurtovoy)
Simultaneidade em C ++ em ação (Anthony Williams) Um livro que aborda o suporte à simultaneidade em C ++ 11, incluindo a biblioteca de threads, a biblioteca atômica, o modelo de memória C ++, bloqueios e mutexes, além de questões de design e depuração de aplicativos multithread. Uma segunda edição que cobre C ++ 14 e C ++ 17 já foi publicada.
Metaprogramação C ++ avançada (Davide Di Gennaro) Um manual pré-C ++ 11 de técnicas de TMP, focado mais na prática do que na teoria. Existem vários trechos neste livro, alguns dos quais são obsoletos por traços de tipo, mas as técnicas são úteis no entanto. Se você consegue suportar a formatação / edição peculiar, é mais fácil ler do que o Alexandrescu e, sem dúvida, mais gratificante. Para desenvolvedores mais experientes, há uma boa chance de você descobrir algo sobre um canto escuro do C ++ (uma peculiaridade) que geralmente só ocorre através de uma vasta experiência.
Programação funcional em C ++ (Ivan Čukić) O livro apresenta ao leitor o paradigma funcional em C ++ moderno. Abrange os aspectos teóricos e de código com uma variedade de exemplos e diagramas. O autor tem experiência no ensino e o utiliza para orientar suavemente o leitor através de diferentes aspectos da programação funcional.
Os C ++ 11 / 14 / 17 normais (INCITS / ISO / IEC 14882: 2011/2014/2017) Isto, naturalmente, é o árbitro final de tudo o que é ou não é C ++. Esteja ciente, no entanto, de que ele se destina apenas como uma referência para usuários experientes que desejam dedicar tempo e esforço consideráveis ao seu entendimento. O padrão C ++ 17 é lançado em formato eletrônico para 198 francos suíços.
O padrão C ++ 17 está disponível, mas aparentemente não de forma econômica - diretamente do ISO custa 198 francos suíços (cerca de US $ 200). Para a maioria das pessoas, o rascunho final antes da padronização é mais do que adequado (e gratuito). Muitos preferem um rascunho ainda mais recente , documentando novos recursos que provavelmente serão incluídos no C ++ 20.
Visão geral do novo C ++ (C ++ 11/14) (apenas PDF) (Scott Meyers) ( atualizado para o C ++ 14 ) Estes são os materiais de apresentação (slides e algumas notas de aula) de um curso de treinamento de três dias oferecido por Scott Meyers, um autor altamente respeitado em C ++. Embora a lista de itens seja curta, a qualidade é alta.
As Diretrizes Principais do C ++ (C ++ 11/14/17 /…) (editadas por Bjarne Stroustrup e Herb Sutter) são um documento on-line em evolução que consiste em um conjunto de diretrizes para o uso moderno de C ++. As diretrizes estão focadas em questões de nível relativamente mais alto, como interfaces, gerenciamento de recursos, gerenciamento de memória e concorrência que afetam a arquitetura do aplicativo e o design da biblioteca. O projeto foi anunciado no CppCon'15 por Bjarne Stroustrup e outros e agradece as contribuições da comunidade. A maioria das diretrizes é complementada com uma justificativa e exemplos, além de discussões sobre o possível suporte a ferramentas. Muitas regras são projetadas especificamente para serem verificáveis automaticamente por ferramentas de análise estática.
O Super ++ FAQ do C ++ (Marshall Cline, Bjarne Stroustrup e outros) é um esforço da Standard C ++ Foundation para unificar as FAQs do C ++ anteriormente mantidas individualmente pelo Marshall Cline e Bjarne Stroustrup e também incorporando novas contribuições. Os itens tratam principalmente de questões de nível intermediário e geralmente são escritos com um tom de humor. Nem todos os itens podem estar totalmente atualizados com a edição mais recente do padrão C ++ ainda.
O cppreference.com (C ++ 03/11/14/17 /…) (iniciado por Nate Kohl) é um wiki que resume os recursos básicos da linguagem principal e possui extensa documentação da biblioteca padrão do C ++. A documentação é muito precisa, mas é mais fácil de ler do que o documento padrão oficial e fornece melhor navegação devido à sua natureza wiki. O projeto documenta todas as versões do padrão C ++ e o site permite filtrar a exibição para uma versão específica. O projeto foi apresentado por Nate Kohl no CppCon'14 .
O design e a evolução do C ++ (Bjarne Stroustrup) Se você deseja saber por que a linguagem é a que é, este livro é onde você encontra respostas. Isso abrange tudo antes da padronização do C ++.
Ruminações em C ++ - (Andrew Koenig e Barbara Moo) [Revisão]
Estilos e expressões avançadas de programação em C ++ (James Coplien) Antecessor do movimento de padrões, descreve muitas "expressões idiomáticas" específicas para C ++. Certamente é um livro muito bom e pode ainda valer a pena ser lido, se você puder poupar tempo, mas bastante antigo e não atualizado com o C ++ atual.
Design de software C ++ em larga escala (John Lakos) Lakos explica técnicas para gerenciar projetos de software C ++ muito grandes. Certamente, uma boa leitura, se estiver atualizada. Foi escrito muito antes do C ++ 98 e perde muitos recursos (por exemplo, namespaces) importantes para projetos de grande escala. Se você precisar trabalhar em um grande projeto de software em C ++, poderá lê-lo, embora precise levar mais do que um grão de sal com ele. O primeiro volume de uma nova edição é lançado em 2019 .
Por dentro do modelo de objeto C ++ (Stanley Lippman) Se você deseja saber como as funções de membro virtual são comumente implementadas e como os objetos base são geralmente dispostos na memória em um cenário de várias heranças, e como tudo isso afeta o desempenho, é aqui que você encontre discussões aprofundadas sobre esses tópicos.
O manual de referência do C ++ anotado (Bjarne Stroustrup, Margaret A. Ellis) Este livro está bastante desatualizado pelo fato de explorar a versão 1989 do C ++ 2.0 - modelos, exceções, espaços para nome e novos lançamentos ainda não foram introduzidos. Afirmando que, no entanto, este livro percorre todo o padrão C ++ da época, explicando a lógica, as possíveis implementações e os recursos da linguagem. Este não é um livro para aprender os princípios e padrões de programação em C ++, mas para entender todos os aspectos da linguagem C ++.
Pensando em C ++ (Bruce Eckel, 2ª Edição, 2000). Dois volumes; é umconjunto gratuito de livros de introdução aoestilo tutorial. Downloads: vol 1 , vol 2 . Infelizmente, eles são prejudicados por vários erros triviais (por exemplo, mantendo que os temporários são automaticamenteconst
), sem lista oficial de erratas. A 3 parcial rd lista do partido errata está disponível em ( http://www.computersciencelab.com/Eckel.htm ), mas, aparentemente, não está mantido.
C ++ científico e de engenharia: uma introdução a técnicas e exemplos avançados (John Barton e Lee Nackman) É um livro abrangente e muito detalhado que tentou explicar e fazer uso de todos os recursos disponíveis em C ++, no contexto de métodos numéricos. Ele introduziu na época várias novas técnicas, como o Padrão de Modelo Curiosamente Recorrente (CRTP, também chamado truque de Barton-Nackman). Foi pioneira em várias técnicas, como análise dimensional e diferenciação automática. Ele veio com muito código compilável e útil, variando de um analisador de expressão a um wrapper Lapack. O código ainda está disponível aqui: http://www.informit.com/store/scientific-and-engineering-c-plus-plus-an-introduction-9780201533934. Infelizmente, os livros se tornaram um pouco desatualizados no estilo e nos recursos do C ++, no entanto, foi uma incrível tour-de-force na época (1994, pré-STL). Os capítulos sobre herança dinâmica são um pouco complicados de entender e não são muito úteis. Uma versão atualizada deste livro clássico que inclui a semântica de movimentação e as lições aprendidas com o STL seria muito agradável.