5 votes

Qu'est-ce que je peux m'attendre comme différence lorsque je passe de C & C# à C++?

Voici une question simple.

J'ai fait beaucoup de travail en utilisant à la fois C et C# (2.0) mais jamais rien en C++. À quoi dois-je m'attendre de différent en apprenant le C++? Y aura-t-il des grosses difficultés ou des obstacles auxquels je devrais faire attention? Est-ce que quelqu'un a de bonnes recommandations de livre/site web pour un cours intensif sur l'apprentissage du C++ pour le programmeur expérimenté?

0voto

Andrew Jahn Points 437

Comme déjà mentionné, vous serez probablement responsable de la gestion de votre mémoire, mais à part apprendre les bibliothèques C++ et comment les inclure, je pense que cela ne devrait pas être une transition difficile du tout.

0voto

tvanfosson Points 268301

En ce qui concerne les différences d'implémentation du langage - et je pense que vous devrez faire attention à des choses comme la gestion de la mémoire, les déclarations dans les en-têtes, etc. - je pense que la chose la plus difficile à gérer est la surcharge supplémentaire des caractères spéciaux dans la syntaxe. Après de nombreuses années à écrire du code C#, ce sur quoi je trébuche le plus ce sont tous ces *, & et <>'s en plus qui traînent. Ma première réaction est que le code C++ ressemble beaucoup à une grande expression régulière.

Je suis sûr que une fois que vous l'avez utilisé pendant un certain temps cela disparaît, mais je ne fais plus suffisamment de C++ pour être à l'aise de savoir exactement quel symbole utiliser dans chaque cas - est-ce que je passe un pointeur ou une référence à cet objet?

L'autre grosse embûche, en lisant le code des autres de toute façon, c'est la surcharge d'opérateurs. Je sais que vous pouvez le faire en C#, mais je l'ai rarement vu faire là-bas. Peut-être que les choses ont changé, mais je voyais beaucoup de surcharge d'opérateurs en C++ où +/- prenait des effets étranges. Mis à part quelques victoires assez évidentes (comme la concaténation de chaînes), je pense que c'est vraiment une fonctionnalité douteuse dont je pourrais me passer - à la fois en C++ et en C#.

0voto

joel.neely Points 17059
  1. Gestion de la mémoire
  2. Syntaxe plus complexe
  3. Gestion de la mémoire
  4. Moins de support d'outils que C# pour tout le cycle de vie de la POO.
  5. Gestion de la mémoire

Et ai-je mentionné la gestion de la mémoire ?

J'ai toujours trouvé intéressant d'utiliser le marché comme indicateur des besoins perçus d'un segment de la population. En considérant (pour contraste) le marché VB, il semblerait que les bibliothèques de composants soient l'accent principal. Cependant, depuis les premiers jours, les offres dominantes sur le marché C++ (et C) semblent avoir été la gestion de la mémoire, la détection de fuites et les outils de qualité de code (par exemple, des inspecteurs de type lint).

-3voto

wds Points 9910

Les références circulaires entre les classes [en C++]. La POO en C++ est vraiment à moitié cuite selon moi.

edit: D'accord, quelques détails supplémentaires sont nécessaires je suppose. Disons que vous avez : class Foo et class Blah. La classe Blah fait référence à la classe Foo, la classe Foo fait référence à la classe Blah. Supposez que vous allez par la voie naïve, vous pourriez implémenter cela comme ceci :

#include 
class Foo {
    Blah blah;
    ...
}

et Blah :

#include 
class Blah {
     Foo foo;
     ...
}

Cela ne fonctionnera probablement pas. Au lieu de cela, vous devez utiliser des références anticipées, c'est-à-dire que Foo devient :

class Blah;

class Foo {
    Blah blah;
    ...
}

Si vous recherchez "références circulaires en C++" sur Google, vous verrez pourquoi j'en ai parlé dans cette question. Arrêtez de voter négativement, d'accord...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X