Entonces, hace aproximadamente un año, estaba en el mismo barco que usted: un autodidacta C # dev que sentía la necesidad de aprender C ++. Por supuesto, me detuve y comencé varias veces. En mi tercer intento, finalmente lo atravesé.
Lo que es imprescindible comprender es que, en términos de metodologías C ++ y C #, es probable que pase mucho tiempo entendiendo qué significan realmente los métodos de manipulación de datos a través de punteros y referencias , así como cuándo y cómo usarlos dadas las circunstancias.
Lo bueno de C ++ es que la asignación de la pila de objetos es bastante simple en su mayor parte, y debe asignar objetos de esta manera si su programa cumple con los requisitos especificados en este método. De lo contrario, dependerá de los punteros para obtener velocidad, eficiencia y limpieza rápida. Recomiendo leer esto: http://www.parashift.com/c++-faq-lite/ ya que le dará MUCHA comprensión técnica de cómo funciona C ++ bajo el capó.
Dejame darte un ejemplo:
En C ++ existe esta implementación de constructor conocida como "lista de inicialización", que difiere de inicializar miembros de clase en el cuerpo de un constructor. ¿Por qué? Porque a menos que el tipo que se inicialice sea primitivo, el compilador creará copias múltiples e innecesarias del objeto que se crea cuando se asigna en el cuerpo del ctor. Potencialmente, esto puede reducir el rendimiento, dependiendo del compilador y de los requisitos escalados de la aplicación.
¿Sabes qué es un delegado? Bueno, en C ++ se conoce como puntero de función . Este lenguaje es bastante difícil de dominar al principio, pero si quieres ser increíble ... definitivamente es obligatorio.
C # es fácil ... muy fácil.