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?
Réponses
Trop de publicités?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++.
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.
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.
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.)
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