C ++ más efectivo (Scott Meyers) Incluso más reglas generales que C ++ efectivo . No es tan importante como los del primer libro, pero aún así es bueno saberlo.
Excepcional C ++ (Herb Sutter) Presentado como un conjunto de acertijos, este tiene una de las mejores y minuciosas discusiones sobre el manejo adecuado de los recursos y la seguridad excepcional en C ++ a través de la adquisición de recursos es la inicialización (RAII) además de la cobertura en profundidad de una variedad de otros temas, incluyendo el modismo de pimpl, búsqueda de nombres, buen diseño de clase y el modelo de memoria C ++. [Revisión]
Más Excepcional C ++ (Herb Sutter) Cubre temas de seguridad de excepción adicionales no cubiertos en Excepcional C ++ , además de la discusión de la programación eficaz orientada a objetos en C ++ y el uso correcto de la STL. [Revisión]
Estilo C ++ excepcional (Herb Sutter) Analiza la programación genérica, la optimización y la gestión de recursos; Este libro también tiene una excelente exposición de cómo escribir código modular en C ++ mediante el uso de funciones que no son miembros y el principio de responsabilidad única. [Revisión]
Estándares de codificación C ++ (Herb Sutter y Andrei Alexandrescu) "Estándares de codificación" aquí no significa "¿cuántos espacios debo sangrar mi código?" Este libro contiene 101 mejores prácticas, expresiones idiomáticas y dificultades comunes que pueden ayudarlo a escribir código C ++ correcto, comprensible y eficiente. [Revisión]
Plantillas C ++: la guía completa (David Vandevoorde y Nicolai M. Josuttis) Este es el libro sobre plantillas tal como existían antes de C ++ 11. Cubre todo, desde lo más básico hasta algunas de las metaprogramaciones de plantillas más avanzadas y explica cada detalle de cómo funcionan las plantillas (tanto conceptualmente como cómo se implementan) y discute muchos errores comunes. Tiene excelentes resúmenes de la Regla de una definición (ODR) y la resolución de sobrecarga en los apéndices. Ya se ha publicadouna segunda edición que cubre C ++ 11, C ++ 14 y C ++ 17. [Revisión]
C ++ 17 - La guía completa (Nicolai M. Josuttis) Este libro describe todas las nuevas características introducidas en el Estándar C ++ 17 que cubren todo, desde las simples como 'Inline Variables', 'constexpr if' hasta 'Polymorphic Recursos de memoria 'y' Nuevo y eliminar con datos sobrealineados '.
Diseño moderno de C ++ (Andrei Alexandrescu) Un libro innovador sobre técnicas avanzadas de programación genérica. Presenta un diseño basado en políticas, listas de tipos y expresiones genéricas de programación genéricas, luego explica cuántos patrones de diseño útiles (incluidos los asignadores de objetos pequeños, functores, fábricas, visitantes y métodos múltiples) se pueden implementar de manera eficiente, modular y limpia utilizando programación genérica . [Revisión]
Metaprogramación de plantillas C ++ (David Abrahams y Aleksey Gurtovoy)
Concurrencia de C ++ en acción (Anthony Williams) Un libro que cubre el soporte de concurrencia de C ++ 11 que incluye la biblioteca de subprocesos, la biblioteca atómica, el modelo de memoria C ++, bloqueos y mutexes, así como cuestiones de diseño y depuración de aplicaciones multiproceso. Ya se ha publicadouna segunda edición que abarca C ++ 14 y C ++ 17.
Metaprogramación avanzada de C ++ (Davide Di Gennaro) Un manual anterior a C ++ 11 de técnicas TMP, centrado más en la práctica que en la teoría. Hay un montón de fragmentos en este libro, algunos de los cuales quedan obsoletos por los rasgos de tipo, pero las técnicas, sin embargo, son útiles para conocer. Si puede soportar el peculiar formato / edición, es más fácil de leer que Alexandrescu y, posiblemente, más gratificante. Para los desarrolladores más experimentados, hay una buena posibilidad de que puedas aprender algo sobre un rincón oscuro de C ++ (una peculiaridad) que generalmente solo se produce a través de una amplia experiencia.
Programación funcional en C ++ (Ivan Čukić) El libro presenta al lector el paradigma funcional en C ++ moderno. Cubre los aspectos teóricos y de código con una variedad de ejemplos y diagramas. El autor tiene experiencia en la enseñanza y la utiliza para guiar sin problemas al lector a través de diferentes aspectos de la programación funcional.
Los C ++ 11 / 14 / 17 estándar (INCITS / ISO / IEC 14882: 2011/2014/2017) Esto, por supuesto, es el árbitro final de todo lo que es o no es C ++. Sin embargo, tenga en cuenta que está destinado únicamente como una referencia para usuarios experimentados dispuestos a dedicar un tiempo y esfuerzo considerables a su comprensión. El estándar C ++ 17 se lanzó en forma electrónica para 198 francos suizos.
El estándar C ++ 17 está disponible, pero aparentemente no en una forma económica: directamente de la ISO , cuesta 198 francos suizos (alrededor de $ 200 US). Para la mayoría de las personas, el borrador final antes de la estandarización es más que adecuado (y gratuito). Muchos preferirán un borrador aún más nuevo , que documente las nuevas características que probablemente se incluirán en C ++ 20.
Descripción general del nuevo C ++ (C ++ 11/14) (solo PDF) (Scott Meyers) ( actualizado para C ++ 14 ) Estos son los materiales de presentación (diapositivas y algunas notas de clase) de un curso de capacitación de tres días ofrecido por Scott Meyers, que es un autor muy respetado en C ++. Aunque la lista de artículos es corta, la calidad es alta.
Las Pautas principales de C ++ (C ++ 11/14/17 /…) (editadas por Bjarne Stroustrup y Herb Sutter) es un documento en línea en evolución que consta de un conjunto de pautas para usar bien C ++ moderno. Las directrices se centran en cuestiones de nivel relativamente superior, como interfaces, gestión de recursos, gestión de memoria y concurrencia que afectan la arquitectura de la aplicación y el diseño de la biblioteca. El proyecto fue anunciado en CppCon'15 por Bjarne Stroustrup y otros y agradece las contribuciones de la comunidad. La mayoría de las pautas se complementan con una justificación y ejemplos, así como debates sobre el posible soporte de herramientas. Muchas reglas están diseñadas específicamente para ser verificables automáticamente por herramientas de análisis estático.
El C ++ Super-FAQ (Marshall Cline, Bjarne Stroustrup y otros) es un esfuerzo de la Fundación Standard C ++ para unificar las preguntas frecuentes de C ++ mantenidas previamente individualmente por Marshall Cline y Bjarne Stroustrup y también incorporando nuevas contribuciones. Los artículos abordan principalmente problemas en un nivel intermedio y a menudo están escritos con un tono humorístico. No todos los elementos pueden estar completamente actualizados con la última edición del estándar C ++ todavía.
cppreference.com (C ++ 03/11/14/17 / ...) (iniciado por Nate Kohl) es un wiki que resume las características básicas del lenguaje central y tiene una amplia documentación de la biblioteca estándar de C ++. La documentación es muy precisa, pero es más fácil de leer que el documento estándar oficial y proporciona una mejor navegación debido a su naturaleza wiki. El proyecto documenta todas las versiones del estándar C ++ y el sitio permite filtrar la pantalla para una versión específica. El proyecto fue presentado por Nate Kohl en CppCon'14 .
El diseño y la evolución de C ++ (Bjarne Stroustrup) Si desea saber por qué el lenguaje es como es, este libro es donde encontrará las respuestas. Esto cubre todo antes de la estandarización de C ++.
Reflexiones sobre C ++ - (Andrew Koenig y Barbara Moo) [Revisión]
Estilos y modismos de programación avanzada de C ++ (James Coplien) Un predecesor del movimiento del patrón, describe muchos "modismos" específicos de C ++. Sin duda, es un libro muy bueno y podría valer la pena leerlo si puede dedicarle tiempo, pero es bastante antiguo y no está actualizado con el C ++ actual.
Diseño de software C ++ a gran escala (John Lakos) Lakos explica técnicas para administrar proyectos de software C ++ muy grandes. Ciertamente, una buena lectura, si solo estuviera actualizada. Fue escrito mucho antes de C ++ 98 y pierde muchas características (por ejemplo, espacios de nombres) importantes para proyectos a gran escala. Si necesita trabajar en un gran proyecto de software C ++, es posible que desee leerlo, aunque debe llevar más de un grano de sal. El primer volumen de una nueva edición se lanza en 2019 .
Dentro del modelo de objetos de C ++ (Stanley Lippman) Si desea saber cómo se implementan comúnmente las funciones de miembro virtual y cómo los objetos base se presentan comúnmente en la memoria en un escenario de herencia múltiple, y cómo todo esto afecta el rendimiento, aquí es donde encuentre discusiones exhaustivas de tales temas.
Manual de referencia anotado de C ++ (Bjarne Stroustrup, Margaret A. Ellis) Este libro está bastante desactualizado en el hecho de que explora la versión C ++ 2.0 de 1989: aún no se han introducido plantillas, excepciones, espacios de nombres y nuevos modelos. Sin embargo, al decir eso, este libro pasa por todo el estándar C ++ de la época explicando la justificación, las posibles implementaciones y las características del lenguaje. Este no es un libro para aprender principios y patrones de programación en C ++, sino para comprender todos los aspectos del lenguaje C ++.
Pensando en C ++ (Bruce Eckel, 2ª edición, 2000). Dos tomos; es unconjunto gratuito de estilo tutorialde libros de nivel de introducción. Descargas: vol 1 , vol 2 . Desafortunadamente, están marcados por una serie de errores triviales (por ejemplo, mantener que los temporales son automáticosconst
), sin una lista oficial de erratas. Un parcial de 3 rd lista de erratas partido está disponible en ( http://www.computersciencelab.com/Eckel.htm ), pero al parecer no ha mantenido.
Scientific and Engineering C ++: una introducción a las técnicas avanzadas y ejemplos (John Barton y Lee Nackman) Es un libro completo y muy detallado que intentó explicar y utilizar todas las características disponibles en C ++, en el contexto de los métodos numéricos. En su momento introdujo varias técnicas nuevas, como el Patrón de plantilla curiosamente recurrente (CRTP, también llamado truco de Barton-Nackman). Fue pionera en varias técnicas, como el análisis dimensional y la diferenciación automática. Vino con una gran cantidad de código compilable y útil, que va desde un analizador de expresiones hasta un contenedor Lapack. El código todavía está disponible aquí: http://www.informit.com/store/scientific-and-engineering-c-plus-plus-an-introduction-9780201533934. Desafortunadamente, los libros se han vuelto algo obsoletos en el estilo y las características de C ++, sin embargo, fue un increíble tour-de-force en ese momento (1994, pre-STL). Los capítulos sobre herencia dinámica son un poco complicados de entender y no muy útiles. Una versión actualizada de este libro clásico que incluye semántica de movimiento y las lecciones aprendidas del STL sería muy buena.