-
O primeiro e mais importante, você deve aprender RAII: Aquisição de recursos é inicialização
-
Certifique-se de usar
new
, então não se esqueça de usardelete
em seu programa. Não misturenew
commalloc
edelete
comfree
.new
emalloc
não são intercambiáveis, nem sãodelete
efree
. Como no C #, você não escreve o destruidor (geralmente), então em C ++ você precisa aprender a usar o destructor efetivamente para liberar memória e outros recursos! Depois de conhecer esses conceitos, tente projetar as coisas de maneira RAII para lidar com os recursos com eficiência, para que você não precise lidar comnew
edelete
explicitamente em seu código em todos os lugares. -
Deve aprender o que é pontos de sequência , comportamento indefinido , comportamento não especificado , comportamento definido pela implementação em C ++. Como o C # não tem esses conceitos, isso significa que você nunca ouviu esses termos durante a programação em C #, portanto é muito provável que você escreva código C ++ (como
a[++i]= i
,i+=++i
) cujo comportamento é não bem definido. Então, eu recomendo que você leia estes tópicos: - Leia itens de Effective C ++ Series por Scott Meyers. Depois deles, leia também Exceptional C ++ Series de Herb Sutter.
PS: Já que falei sobre novo, delete, memória bruta, etc, então deixe-me adicionar uma diferença interessante entre C ++ e C #:
Em C ++, this
é um ponteiro, enquanto em C # this
é uma referência!