Différence entre Structure et Classe
Quelle est la différence entre Structure et Classe ? – Les structures et les classes sont presque pareils, mais il existe de nombreuses différences. La différence majeure est que la classe offre la flexibilité de combiner des données et des méthodes et fournit la réutilisabilité appelée héritage. Structure devrait normalement être utilisé pour regrouper des données. La différence technique se résume à des problèmes subtils concernant la visibilité par défaut des membres.
Les membres d’une classe sont privés par défaut et les membres d’une structure sont publics par défaut.
Par exemple, le programme 1 échoue au niveau de la compilation et le programme 2 fonctionne correctement.
// Programme 1 #include <stdio.h> class Personne { int age; //l'âge est un membre privé par défaut }; int main() { Personne p; p.age = 25; // erreur de compilation, car l'âge est un membre privé getchar(); return 0; }
// Programme 2 #include <stdio.h> struct Personne { int age; //l'âge est un membre public par défaut }; int main() { Personne p; p.age = 25; // fonctionne bien parce que l'âge est un membre public getchar(); return 0; }
Différences clés entre Structure et Classe
- Classe est passé par référence, tandis qu’une structure est passé par copier, cela signifie qu’une classe est un type de référence et que son objet est créé sur la mémoire du tas où structure est un type de valeur et que son objet est créé dans la mémoire de la pile.
- Classe peut créer une sous-classe qui héritera des propriétés et des méthodes de la classe mère, alors qu’une structure ne support pas l’héritage.
- Une classe a tous les membres privés par défaut. Dans une structure tous les membres sont publics par défaut.
- Les classes permettent d’effectuer un nettoyage avant que l’objet ne soit libéré, car le garbage collector fonctionne sur la mémoire du tas. Les objets sont généralement libérés lorsque l’instance n’est plus référencée par un autre code. Les structures ne possèdent pas le garbage collector, donc pas de gestion efficace de la mémoire.
- La taille d’une classe vide est 1 octet, tandis que la taille d’une structure vide est 0 octet
- Les classes sont toujours adaptées aux objets plus grands ou complexes et les structures conviennent aux petits objets.
Conclusion
Structure présente certaines des limites, car une structure ne permet pas de masquer les données, les structures ne supportent pas l’héritage. En C ++, les classes sont une version améliorées du structure.
Malheureusement, 2 choses sont fausses dans ce texte :
Premièrement, la taille d’une structure vide n’est pas de 0 octet. C’est la même que celle d’une classe vide, c’est à dire 1 octet.
Ensuite, ceci est très important, il est tout à fait possible de créer une structure qui hérite d’une classe. Il est entièrement faux de dire que la structure ne supporte pas l’héritage.
Voilà voilà…
C’est vrai pour le langage C++, mais c’est FAUX pour le langage C.