aprender C y C++, al mismo tiempo, estoy hablando de la experiencia aquí. Muy a menudo encuentro un código que mezcla C y C++, por lo que es mejor conocer ambos y sus diferencias. Recoja K & R para C (comprender los punteros, los archivos de encabezado y la asignación y limpieza manual de la memoria ... que Java no usa!) Y cualquier libro decente para principiantes de C++ (elegí Prata, pero sea lo que sea más cómodo). Practique los mismos ejemplos haciendo versiones de C, C++ de manera secuencial, moda orientada a objetos (OO), moda genérica/plantilla, etc. C++ tiene una biblioteca estándar más grande que C: plantillas, contenedores STL (no es necesario punteros, pero usted puede hacer un ajuste fino del puntero escribiendo su propio contenedor), hilos (desde C++ 11). Siempre puede usar C si no tiene otra opción (o bibliotecas de Boost), cualquier compilador de C++ lo permitirá.
Si viene de Java, ya debe conocer los conceptos de OO para C++ y, tal vez, algunos de programación genérica como en las plantillas de C++. C++ es considerado erróneamente como un lenguaje OO, pero es más que eso. Por cierto, los objetos son un concepto dinámico (tiempo de ejecución), mientras que las plantillas son estáticas (tiempo de compilación), así que aprende el lenguaje CONCEPTOS, ¡no solo la sintaxis! Una vez que aprenda los conceptos, lea el libro de Stroustrup (él creó C++) para aprender su filosofía sobre las mejores reglas de diseño para el código C++.
Conozca el último estándar de C++ (C++ 11) ya que agrega muchas cosas nuevas al lenguaje (automático, nullptr, hilos, funciones lambda, contenedores nuevos, etc.). Por último, use Doxygen en C/C++ de la misma manera que usó Javadoc ... no hay nada peor que el código ilegible e indocumentado sin importar el idioma que esté usando.
¿No conoce los conceptos subyacentes de la programación? ... ¿De dónde aprendiste a codificar Java y C#? ¿Qué libros? No valen la pena allí si no enseñaron eso junto con los conceptos de programación, demonios, es lo primero que aprendí, incluso antes de programar; el ciclo fetch-execute, punteros ... ¡Y esto fue para Java! –
Si realmente desea obtener información sobre cómo se compila su código y qué ocurre en un nivel inferior, le sugiero que lo ensamble. Para ser sincero, en realidad no es tan difícil como parece una vez que te involucras, y obtendrás mucha información sobre lo que está sucediendo con tu código una vez que esté compilado (estructura de pila, etc.). – Cam
C> C++ menos es más. Pruebe C. –