Então, cerca de um ano atrás, eu estava no mesmo barco que você: aprendi c # dev que sentiu a necessidade de aprender C ++. Concedido, parei e comecei várias vezes. Na minha terceira tentativa, finalmente consegui.
O que é essencial entender é que, em termos de metodologias C ++ e C #, você provavelmente gastará muito tempo entendendo quais métodos de manipulação de dados por meio de ponteiros e referências realmente significam, bem como quando e como usá-los, dadas as circunstâncias.
O bom do C ++ é que a alocação da pilha de objetos é bastante simples, e você deve alocar objetos dessa maneira se o seu programa atender aos requisitos especificados neste método. Caso contrário, você depende de indicadores para velocidade, eficiência e limpeza rápida. Eu recomendo a leitura: http://www.parashift.com/c++-faq-lite/ , pois fornecerá MUITO conhecimento técnico sobre como o C ++ funciona sob o capô.
Deixe-me lhe dar um exemplo:
No C ++, existe essa implementação de construtor conhecida como "lista de inicialização", que difere da inicialização de membros da classe no corpo de um construtor. Por quê? Porque, a menos que o tipo que está sendo inicializado seja primitivo, o compilador criará cópias múltiplas e desnecessárias do objeto que está sendo criado quando alocado no corpo do ctor. Isso pode potencialmente reduzir o desempenho, dependendo do compilador, bem como dos requisitos em escala do aplicativo.
Sabe o que é um delegado? Bem, em C ++ é conhecido como um ponteiro de função . No início, esse idioma é bastante difícil de dominar, mas se você quiser ser incrível ... é definitivamente necessário.
C # é fácil ... muito fácil.