Il est bon de rappeler les origines du C++, et sa compatibilité avec le C.
Le C a des structs, il n'a pas de concept d'encapsulation, donc tout est public.
Le fait d'être public par défaut est généralement considéré comme une mauvaise idée lorsqu'on adopte une approche orientée objet. Ainsi, pour créer une forme de C qui soit nativement propice à la POO (vous pouvez faire de la POO en C, mais cela ne vous aidera pas), ce qui était l'idée du C++ (à l'origine "C With Classes"), il est logique de rendre les membres privés par défaut.
D'un autre côté, si Stroustrup avait changé la sémantique de struct
pour que ses membres soient privés par défaut, cela aurait rompu la compatibilité (ce n'est plus aussi souvent vrai depuis que les standards ont divergé, mais tous les programmes C valides étaient aussi des programmes C++ valides, ce qui a eu un grand effet sur l'implantation du C++).
Donc un nouveau mot-clé, class
a été introduit pour être exactement comme un struct, mais privé par défaut.
Si le C++ était né de rien, sans histoire, il n'aurait probablement qu'un seul mot-clé de ce type. Il n'aurait probablement pas non plus eu l'impact qu'il a eu.
En général, les gens ont tendance à utiliser struct lorsqu'ils font quelque chose qui ressemble à la façon dont les structs sont utilisés en C : membres publics, pas de constructeur (tant qu'il n'est pas dans une union, vous pouvez utiliser les structs en tant qu'unité). puede avoir des constructeurs dans les structs, comme pour les classes, mais les gens ont tendance à ne pas le faire), pas de méthodes virtuelles, etc. Puisque les langages servent autant à communiquer avec les personnes qui lisent le code qu'à instruire les machines (sinon on s'en tiendrait à l'assembleur et aux opcodes bruts des VM), c'est une bonne idée de s'en tenir à cela.
9 votes
Ce site lien résume bien les différences.
1 votes
Pourquoi les gens utilisent-ils tous des structures pour construire un arbre alors ? Parce qu'il semble que la différence ne soit pas si importante. BTW, Ce c'est un site web génial. @sjsam
1 votes
Vous cherchez la différence entre
struct
en C et C++ ? Voir ici .0 votes
@JW.ZG Pas "tous" les gens le font ! Ceux qui le font préfèrent simplement le faire, ou ne réalisent pas ce qu'il faut faire.
struct
signifie en C++ ;) Mais il n'y a aucune raison pour que vous ne puissiez pas utiliser la fonctionclass
à la place.