Beaucoup ont tendance à écrire "C / C ++", comme si c'était la même chose. Bien qu'ils partagent de nombreuses similitudes, ils ne sont clairement pas les mêmes.
Mais quelles sont réellement les différences fondamentales entre C et C ++? C ++ est-il une version améliorée de C ou existe-t-il des fonctionnalités qui n'existent pas en C ++?
Réponses:
Les points suivants concernent le C ++:
la source
C ++ a été inventé pour gérer une complexité que C ne pouvait pas gérer. Par exemple, un problème courant avec C était que vous pouviez "manquer de noms pour les variables" (à ne pas prendre au pied de la lettre bien sûr) car il n'y avait pas d'encapsulation, d'espaces de noms, etc.
De plus, C n’a pas d’exception, la gestion des erreurs est donc très sujette aux erreurs, car il incombe à l’utilisateur de la bibliothèque de toujours vérifier les valeurs de retour des fonctions, alors qu’à part des exceptions, le développeur de la bibliothèque lève simplement une exception garantissant l’arrêt du flux du programme.
C ++ aide en ayant le constructeur init objets qui est automatiquement appelé par le compilateur. Contrairement aux structures C qui doivent être initialisées par le programmeur (d'où une autre zone sujette aux erreurs).
Enfin, il existe de nombreux avantages présentés par OOP, tels que la réutilisation d’objets, ainsi que les concepts génériques basés sur la programmation, tels que les modèles et les génériques qui vous permettent de réutiliser le code source, etc.
Et beaucoup d'autres choses qui prendraient trop de mon temps à énumérer ici.
la source
En général, tout ce qui existe en C est supporté en C ++. Évidemment, le contraire est absolument faux.
En termes simples, C ++ est orienté objet (ainsi, par exemple, vous avez des classes), C ne l’est pas.
C ++ a un type booléen que C89 n'a pas.
Ce sont des langues différentes. Ils partagent juste la plupart de la syntaxe.
la source
_Bool
, avecbool
comme alias).long long
type de données qui ne fait pas (encore) partie d'ISO C ++.C99 a quelques fonctionnalités qui n'existent pas (du moins sous exactement la même forme) en C ++ (par exemple, membres de tableau flexibles, tableaux de longueur variable, etc.)
C99 a également ajouté beaucoup à la bibliothèque qui n'était pas présente dans la norme C ++ 98/03; la plupart de cela a été ajouté à C ++ 11 cependant.
En termes d'orientation de base, C prend en charge essentiellement une programmation procédurale structurée. C ++ supporte cela ainsi que la programmation orientée objet, la programmation générique et la métaprogrammation (réalisation de calculs arbitraires au moment de la compilation). Avec C ++ 11, il ajoute quelques éléments qui pourraient au moins être confondus avec la prise en charge de la programmation fonctionnelle (par exemple, les expressions lambda). C ++ 14 en a ajouté un peu plus, mais la plupart d’entre eux sont vraiment plus pratiques que tout changement majeur d’orientation.
la source
Personnellement, je pense que les modèles sont la fonctionnalité la plus importante que C ++ ajoute à C.
la source
#define GENERATE_INTERFACE(T) T T##_func(T x);
; (type) safe surcharge / templates en C. Je suis d'accord avec Thomas sur le fait que les destructeurs sont une caractéristique beaucoup plus importante que C manque. Mais les destructeurs cachent souvent un code important. Les espaces de noms (scope) sont à mon avis les plus importants.