Honestamente, Al aprender C++, nunca recogí un libro (no llame por favor). El mejor consejo que puedo dar es ir al this page y seguir el tutorial. Cubre la mayoría del lenguaje C++ (léase: las características más comúnmente utilizadas) y lo mantiene lo más simple posible. En cuanto a las API que son importantes ... bueno, eso es una cuestión de preferencia. Ningún toolkit/api realmente ha "ganado", pero Qt, GTK-- (gtkmm) y wxWidgets son todos grandes jugadores. Además de las GUI, es probable que desee aprender las API raw winsock2 y threading o las interfaces de red y subprocesamiento de la biblioteca boost.Estoy de acuerdo en que MFC está muriendo, y para el desarrollo de solo Windows C# está tomando un papel cada vez más grande (incluso en linux/mono C# está empezando a ponerse de moda ... lentamente).
Además, la mejor manera de aprender un idioma es codificar. Así que no solo leas un montón: sin experiencia práctica nunca aprenderás el idioma. Haga preguntas, responda las que pueda y escriba tutoriales, para usted, si nadie más. Anotar lo que has aprendido es una gran referencia, y el proceso de enderezar todo en tu cabeza para escribirlo de manera que otra persona pueda entenderlo sola es una gran manera de reforzar los conceptos. De una manera extraña, pero aparentemente a la inversa, encontré que la mejor forma en que aprendo la programación es ayudando a otras personas con sus preguntas.
@ Neil- estoy en desacuerdo con que los tutoriales en línea son "completamente erróneos". En todo caso, el estilo que le enseñen podría estar orientado a la legibilidad más que a la optimización, lo que en mi opinión no tan humilde es una ventaja. En mi experiencia limitada, encontré cplusplus.com una referencia de referencia para casi todo.
Específicamente, para responder a sus preguntas: 1. No es necesario un libro grueso. Sin embargo, he oído que los más delgados pueden ser útiles como referencia rápida.
Es completamente subjetivo y depende de su objetivo. La red de Boost y las bibliotecas de subprocesos múltiples probablemente sean un buen comienzo.
entre std :: string, std :: stringstream y getline (std :: istream &, std :: string &) que debe ser bastante bueno. C++ viene con una gran cantidad de funcionalidades integradas pero no es demasiado hinchado/enorme/imposible de aprender. Toma ventaja de eso. Todo el análisis ya está incorporado.
Recomendaría efectivo C++ y stl efectivo de inmediato también. – Rick
Me encanta la cita que tienen sobre ese libro: "Cualquiera que lea solo este libro y trabaje con ejemplos y ejercicios tendrá las mismas habilidades que muchos programadores profesionales". Lamentablemente, eso no dice mucho en absoluto. :-) – Ken