44 votes

Est-il vrai qu'il n'est pas nécessaire d'apprendre le C parce que le C ++ contient tout?

Je prends un cours de programmation en C ++ et le professeur nous a dit qu’il n’était pas nécessaire d’apprendre le C, car le C ++ contient tout le contenu du C plus des fonctionnalités orientées objet. Cependant, d'autres m'ont dit que ce n'est pas nécessairement vrai. Quelqu'un peut-il nous éclairer?

82voto

Brian R. Bondy Points 141769

Vue d'ensemble:

C'est presque vrai que C++ est un sur-ensemble de C, et votre professeur est correct, il n'est pas nécessaire d'apprendre le C séparément.

C++ ajoute l'ensemble de l'orienté-objet, l'aspect, de la programmation générique aspect, ainsi que d'avoir des règles moins strictes (comme les variables qui ont besoin d'être déclarée en haut de chaque fonction). C++ ne modifier la définition de certains termes dans C tels que les structures, bien que toujours dans un sur-ensemble.

Exemples de raisons pour lesquelles il n'est pas un sur-ensemble strict:

Cet article de Wikipedia a un couple de bons exemples de ces différences:

L'une des principales différences est que C permet la conversion implicite de void* pour les autres types de pointeur, mais le C++ ne fait pas. Donc, ce qui suit est valable C code:

int *i = malloc(sizeof(int) * 5);

... mais pour le faire fonctionner dans les deux C et C++, il serait nécessaire d'utiliser un explicite cast:

int *i = (int *) malloc(sizeof(int) * 5)

Une autre commune de la portabilité du numéro est que le C++ définit de nombreux nouveaux mots-clés, comme la nouvelle et de la classe, qui peut être utilisés comme identificateurs (par exemple, la variable les noms) dans un programme C.

Cet article de wikipedia a d'autres différences:

Compilateurs C++ interdire goto de traverser une phase d'initialisation, comme dans l'exemple suivant C99 code:

 void fn(void)
 {
  goto flack;
  int i = 1;
 flack:
   ;
 }

Que devez-vous apprendre en premier?

Vous devriez apprendre le C++ tout d'abord, pas parce que C la première va vous faire mal, pas parce que vous aurez à désapprendre quelque chose (vous ne pourrez pas), mais parce qu'il n'y a aucun avantage dans l'apprentissage du C premier. Vous finirez par apprendre à peu près tout sur le C car de toute façon on est plus ou moins contenues dans C++.

12voto

denis phillips Points 7349

Même s'il est vrai que le C++ a été conçu pour maintenir un degré élevé de compatibilité avec le C et un sous-ensemble de ce que vous apprenez en C++ s'appliquer à C la mentalité est complètement différente. Programmation C++ avec Boost ou STL est une expérience très différente que de la programmation en C.

Il y avait un terme d'art appelé à l'aide de C++ comme un meilleur C. Cela signifie l'utilisation de certains langage C++ fonctions et des outils pour faire de la programmation en C plus facile (par exemple, en déclarant la variable d'index d'une boucle for à l'intérieur de la déclaration). Mais maintenant, C++ moderne de développement semble très différent de C autre qu'une grande partie de la syntaxe et dans ces cas la C héritage semble souvent être un fardeau plutôt que comme un avantage.

7voto

shoosh Points 34322

Il peut être vrai que vous n'avez pas besoin d'apprendre la syntaxe de C si vous connaissez la syntaxe de C++, mais vous cetainly avez besoin d'apprendre comment les pratiques de codage sont différents en C qu'en C++.

Si votre professeur n'était pas à 100%.
En C, vous n'avez pas les classes à organiser votre code dans la logique des modules et vous n'avez pas de C++ polymorphisme. Pourtant, vous avez encore besoin pour atteindre ces objectifs, en quelque sorte.
bien que la syntaxe de C est dans une certaine mesure, un sous-ensemble de C++, la programmation en C n'est pas un sous-ensemble de la programmation en C++. c'est complètement différent.

5voto

Oui et non.

Comme d'autres l'ont déjà répondu, le langage C++ est un sur-ensemble du langage C, avec quelques petites exceptions, par exemple, que sizeof('x') donne une valeur différente.

Mais ce que je ne pense pas que a été très clairement indiqué, c'est que quand il s'agit de l' utilisation de ces deux langues, le C++ n'est pas un sur-ensemble, mais plutôt différentes. C++ contient de nouvelles (il peut être discutée si elles sont mieux) façons de faire les choses de base, comme l'écrit à l'écran. Le vieux C façons sont toujours là, mais vous aurez généralement utiliser les nouveaux moyens. Cela signifie qu'un simple programme "hello world" est différent en C et en C++. Il n'est pas vraiment vrai que les choses les plus simples sont les mêmes dans le C et le C++, et puis il suffit d'ajouter des choses plus avancées, telles que le soutien à la programmation orientée objet en C++.

Donc, si vous avez appris le C++, vous aurez besoin de ré-apprendre beaucoup de choses avant que vous pouvez programmer en C. (Ainsi, il est possible d'enseigner le C++ comme une extension de C, toujours à l'aide de printf et le malloc au lieu de iostreams et de nouveau, puis l'ajout de classes et autres C++ choses, mais que la façon d'utiliser le C++ est généralement mal vu.)

4voto

orlando calresian Points 152

Aucun C ++ n'est vraiment un sur-ensemble de C. Vous pouvez consulter cet article pour une liste plus détaillée des différences si cela vous intéresse: http://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B

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