Red de conocimiento informático - Material del sitio web - Cómo aprender C++ rápidamente

Cómo aprender C++ rápidamente

Aprendí C++ en mi primer año y he estado usando C++ desde que comencé a trabajar.

1. Una lista de libros que cubren el acceso al dominio de C++.

"El lenguaje de programación C" debe leerse

"C++ Primer" se conoce como un libro. eso puede ser un libro de referencia introductorio de lectura obligada para que usted pueda transformarse de un programador de C o JAVA a un programador real de C++.

"El lenguaje de programación C++" es obra del padre de C++, conocido como Master B. Después de leer el manual de C++, deberías poder saltarte capítulos y leerlo.

"Piense en c++", Internet dijo que la calidad de traducción de la versión china de este libro es extremadamente pobre, y se recomienda leer la versión fotocopiada y elegir leer.

"Effective c++", similar a Effective java, habla sobre las mejores prácticas y es una lectura obligada para los programadores.

"C++ más eficaz", complemento a la carta.

"La biblioteca estándar de C++", ¿cómo puedo hacerlo si puedo escribir C pero no puedo usar la biblioteca estándar? Esto es como los programadores de Java que no usan el paquete java.util. Es una lectura obligada.

"STL efectivo", mejores prácticas para bibliotecas STL. Otra obra maestra del autor de Effective C++, una lectura obligada.

"La fuente STL anotada", análisis del código fuente STL, este libro debe considerarse un libro profundo/competente, elija leerlo.

"Programación genérica y STL", se dice que en la programación C++ se trata de plantillas y genéricos, por lo que es imperativo dominar los genéricos.

"Plantilla C++", programación de plantillas C++, experiencia en reutilización de código, lectura obligada.

"Exceptional C++", similar a Effective C++, trata sobre las mejores prácticas y el análisis de problemas. El libro enumera muchos escenarios de aplicación y códigos de ejemplo para que los lectores los descubran y elijan leer.

"Más Excepcional C++", suplemento de la carta.

"Estilo C++ excepcional", un suplemento del libro anterior

"Dentro del modelo de objetos C++", con los libros anteriores como base, finalmente puedes leer este libro mágico. Le llevará en un recorrido por los mecanismos de implementación subyacentes del modelo de objetos de C++. Después de leer este libro, cualquier código C ++ parecerá agua corriente. Es una lectura obligada.

2. Excelentes proyectos de código abierto C/C++ (leer código)

SO: kernel Linux LVS, aplicaciones Linux

DB: Mysql, PostgreSQL

p>

Complier: VM, GCC

Marco: OpenSip, SipProxy,

Net: ACE (Java Mina, Netty), TCP/IP, protocolo HTTP pila

Caché: Memcached, Redis,

Biblioteca: STL (paquete de utilidades de Java), Boost, Qt (UI),

equilibrio: Apache, Nginx

GSL

Dirección:/microsoft/GSL

Documentación de Boost

Dirección:/

Qt

Dirección: /Asio/

POCO

Dirección: /w/cpp/links/libs

Además de estos proyectos de código abierto, usted También puedes encontrar algunos cursos públicos gratuitos. Aquí también hay un curso gratuito de C ++ impartido por un medallista de oro de ACM. Puedes probarlo:

¡Aprender bien C ++ es el trampolín para unirse a una gran empresa! Si este curso hubiera estado disponible en aquel entonces, mi C++ no sería así

¿No válido?

Explicación de la sintaxis de C++

Conceptos básicos del lenguaje

Introducción detallada a variables, expresiones, declaraciones, punteros, matrices, control de flujo, funciones, organización de archivos, etc.

Mecanismo abstracto: programación orientada a objetos

Explicación detallada del mecanismo abstracto de C++, encapsulación (clase), herencia, sobrecarga de operadores, objetos de función, manejo de excepciones, etc.

Plantilla - Programación genérica

Presenta en detalle el mecanismo de plantilla de C++, plantillas de clases, plantillas de funciones, especialización de plantillas, etc.

4. C++ orientado a objetos en profundidad

4.1, de C a C++

Referencias y sugerencias: por qué las referencias son importantes

Const Key Word: Por qué es importante const

Espacio de nombres (espacio de nombres)

4.2 Objetos C++ en profundidad

Acerca de los objetos C++

Tipos integrados Objetos, como int, objetos dobles, objetos de tipo personalizado

Definición de tipos de objetos

Palabras clave clase y estructura

Miembros de clase: miembro funciones y datos Miembros

Miembros de datos estáticos

Control de acceso de miembros

Tamaño del objeto

Acerca de este puntero

onst ¿Qué modifican exactamente las funciones miembro y const?

miembros de datos mutables

Cuatro funciones miembro especiales: constructor, destructor, constructor de copias, operador=

Construcción de objetos, Lista de inicialización

Destrucción de objetos

Copia de objetos

Bajo qué circunstancias es necesario definir explícitamente cuatro funciones especiales

Objeto C++ ciclo de vida

4.3. Sobrecarga de operadores

Acerca del mecanismo de sobrecarga de operadores en C++

Sobrecarga de operadores importante

Operaciones aritméticas: +, - , *, /, %, ++, --, ...

Operaciones relacionales: >, <, ==, !=

Acceso a subíndice: [ ]

Llamada a función: (), objeto de función

Conversión de tipo, constructor de un solo parámetro y conversión implícita, evitando la conversión implícita: palabra clave explícita

Elementos y miembros amigos

4.4. Conceptos básicos de la orientación a objetos: herencia

Clase base y clase derivada

Hablemos de la construcción y destrucción de objetos

Funciones virtuales , funciones virtuales puras

Diseño de memoria de clases derivadas, tablas de funciones virtuales

Polimorfismo, tipos polimórficos, cómo incorporar el polimorfismo

Destrucción virtual, por qué la destrucción virtual es importante

4.5, más temas sobre herencia

Herencia múltiple

Herencia virtual y clase base virtual

Acceso a clases base, público/ Herencia protegida/privada

Downcast: static_cast<> ydynamic_cast<>

Identificación de tipo en tiempo de ejecución (RTTI)

4.6. diseño

El mecanismo del lenguaje C++ proporciona soporte completo de programación orientada a objetos

Más allá de la herencia

Varias reglas de programación orientada a objetos y patrones de diseño

p>

5. programación genérica y STL

5.1, mecanismo de plantilla C++

5.2, descripción general de STL

5.3, contenedor STL

5.4, iteración STL

5.5, algoritmo STL

5.6, objeto STL predefinido

5.7, adaptador STL

6.

"C++ Primer"

La última versión: la tercera edición (la cuarta edición se ha puesto a la venta en el extranjero y algunas librerías nacionales en línea también están realizando pedidos por adelantado)

p>

Adecuado para aquellos con amplia experiencia en C y falta de experiencia en C++. Sin embargo, personalmente siempre he creído que este libro tiene rastros demasiado fuertes del lenguaje C, lo que puede no ser bueno para aprender C ++.

"El lenguaje de programación C++"/"Lenguaje de programación C++"

Última versión: Tercera edición especial

Denominado TC++PL, existen otros Rica experiencia en el idioma.

(Algunas personas también lo llaman "TCPL" para abreviar, pero es necesario distinguirlo de otro libro "El lenguaje de programación C")

"C++ esencial"

"C++ acelerado"

p>

Estos dos son más delgados y ambos son buenas opciones. No he leído "C ++ acelerado". Según varias evaluaciones, vale la pena recomendarlo.

Los libros anteriores tienen sus correspondientes versiones en chino y la calidad de la traducción es buena. Puede que no necesites leer todos los libros anteriores, pero en cualquier caso, debes leer TC++PL.

"C++ efectivo"

La última versión: la segunda edición (la tercera edición se ha puesto a la venta en el extranjero y algunas librerías nacionales en línea también están realizando pedidos por adelantado)

denominado CE. ¡Una lectura obligada para los programadores de C++! Muchas veces, cuando decimos la Biblia en C++, no nos referimos a TC++PL, sino a esta. El libro "The Pragmatic Programmer" escribe: "Una vez que se encuentre involucrado en el desarrollo de un proyecto de C++, corra (no camine) a la librería para comprar "Effective C++" de Scott Mayer, y tal vez "More Effective C++". ".

"Estándares de codificación de C++: 101 reglas, directrices y mejores prácticas"/"Estándares de programación de C++"

Personalmente, creo que este libro debería ser un libro de escritorio imprescindible para C++. programadores. Aquí se resumen casi las series efectivas y excepcionales. Aquí se reflejan las últimas plantillas y la extraordinaria experiencia en la industria. El único defecto posible es que para un novato, la pregunta "por qué" no está suficientemente explicada.

Mi opinión es: si no entiendes los términos, recuérdalo y hazlo; si entiendes los términos, supongo que estarás de acuerdo con las opiniones del libro. Creo que el contenido de este libro seguirá siendo relevante al menos hasta 2009, y que los 101 preceptos que contiene serán ampliamente recitados.

Aún no conozco su abreviatura, ¿tal vez “101” sería un candidato?

Al mencionar "C++ efectivo", aparecieron otros tres libros uno por uno:

"C++ más efectivo"

"C++ excepcional"

p>

《C++ más excepcional》.

El nuevo libro "Excepcional estilo C++" también es un buen libro que vale la pena leer.

Ninguno de los libros mencionados anteriormente debe perderse.

Personalmente, se recomienda leer los libros anteriores en orden. Y lea estos libros una y otra vez en el futuro.

"Pensando en C++"/"Pensamientos de programación en C++"

Hay rumores buenos y malos sobre este libro y su versión china. No lo he leído con atención y no haré un comentario. Si es cierto, si está interesado, también puede probar este libro.

Los siguientes libros tratan básicamente del lenguaje en sí y pueden leerse en el siguiente orden.

"Debe saber C++"

Si fuera un año antes, este libro habría sido un peso pesado, pero fue eclipsado por 101 y "Estilo excepcional de C++".

"Errores de C++: cómo evitar problemas comunes en codificación y diseño"/"Trampas de programación de C++"

Este es otro libro que nunca he leído y que ha sido ampliamente elogiado.

"Análisis de código fuente STL"

Tan pronto como recibí este libro, alguien lo "tomó prestado", así que aún no lo he leído. Los amigos que hayan leído este libro pueden dar una evaluación adecuada.

7. Conceptos básicos avanzados de estructura de datos de C++

Esta es la parte más importante que se debe aprender en todos los lenguajes de programación y una de las bases de la composición de programas.

Almacenamiento secuencial, almacenamiento encadenado, lista circular enlazada;

Lista doble enlazada, pila (secuencial y encadenada), cola (secuencial y encadenada);

Aplicación de pila, conceptos básicos de árboles y recorrido, árboles binarios;

Algoritmo de ordenación, algoritmo de unión, selección, inserción, rápido, Hill.

¿Conoce el contenido anterior?

8. Desarrollo avanzado de interfaz de usuario en C++

Domine la arquitectura de la biblioteca de clases QT y el modelo de desarrollo de interfaz gráfica;

p>

Dominar las habilidades de desarrollo de QT, mecanismo de mensajes, procesamiento de gráficos;

Dominar la programación de redes QT, UDP, uso de TCP;

Dominar los métodos de procesamiento de archivos QT, serialización;

Domina la tecnología de trasplante de QT en diferentes plataformas como Windows, Linux, iOS y Android.

9. Servidor de red Unix/Linux avanzado C++

Domina el método de desarrollo de la plataforma Unix/Linux;

Competente en el uso de llamadas al sistema;

Competente en la gestión de memoria, procesos y programación de subprocesos de Unix/Linux;

Familiarizado con los métodos de desarrollo de servidores de red, competente en la escritura de programas de servicios de red TCP y UCP;

Domina la sincronización /modelo IO asíncrono en Uso en programación de redes.

10. Desarrollo avanzado de bases de datos C++

Dominar las habilidades prácticas del lenguaje SQL. Cómo utilizar bases de datos Oracle y MySQL.

Si domina las habilidades enumeradas anteriormente, tiene la capacidad de resolver problemas complejos y dificultades técnicas, y puede desarrollar de forma independiente algunos módulos funcionales más complejos, entonces es un honor para mí decirle que ha logrado En el nivel intermedio, un salario de más de 10.000 yuanes es pan comido para ti.

11.Referencia estándar de C++

Referencia de C++

Dirección: /w/

Estándar de codificación C++

Dirección: /Cpp/CppCodingStandard.html

Estándar C++

Dirección: /

Borrador del estándar C++: Contenido

Dirección: http: //eel.is/c++draft/