Différence entre classe et structure Différence Entre

Anonim

Avant de comprendre la différence entre Class et Struct, nous devrions connaître quelques concepts de base qui leur sont associés. Sans une compréhension des concepts, il est difficile de comprendre les différences entre les deux.

Qu'est-ce que la classe et l'objet:

Ce sont les deux concepts importants liés à la programmation orientée objet, qui constituent la base du cadrage des fonctions et des données transmises à d'autres fonctions. Pour une meilleure compréhension, nous pouvons le corréler à un exemple réel. Une classe peut être considérée comme un magasin, et un objet peut être l'un des magasins individuels, spécifiques tels que l'épicerie, la papeterie, les fruits, etc. Tous les objets partagent les propriétés communes de la classe principale - le magasin -, et à son tour, les objets peuvent avoir leurs propres propriétés exclusives telles qu'un design spécifique, un éclairage, etc. A travers les objets, nous pouvons réellement utiliser la classe; ils forment les instances d'une classe.

Syntaxe d'une classe

Class Store {

public string things;

conception de chaînes publiques;

}

Syntaxe d'un objet

Store épicerie = new Store ();

Store Stationery = nouveau magasin ();

Qu'est-ce qu'une structure?

Une structure ne comprend que les données et, par conséquent, elle aide à cadrer les exigences de données individuelles via les objets Struct. Contrairement à une classe, il lui manque des fonctions. Voici sa syntaxe:

struct grocery_entrance {

char nom_entrée [50];

int entrance_size;

} épicerie_entrée;

Tous les magasins peuvent utiliser l'entrée «Struct» avec des noms et des tailles individuels.

Qu'est-ce que l'héritage?

Cela ressemble à la façon dont un fils hérite des possessions de son père et, à son tour, le fils peut aussi ajouter d'autres possessions de son propre chef. La classe peut être une classe de base ou une classe dérivée, dans laquelle la première peut être prise comme base pour former la seconde. La classe dérivée ajoute peu d'autres propriétés pour elle-même en dehors de ce qu'elle obtient de la classe de base. Lorsque nous considérons l'exemple ci-dessus, l'épicerie peut encore être dérivée à une épicerie spécifique, comme l'épicerie XYZ.

Maintenant que nous connaissons les concepts de base, nous pouvons passer en revue la différence entre Class et Struct.

Comment sont-ils différents?

  • Réutilisation: Les classes constituant le cadre de base, elles peuvent être réutilisées; Les structs, cependant, sont des éléments individuels avec des propriétés spécifiques, donc ils ne peuvent pas être réutilisés. Par exemple, la catégorie de l'épicerie peut être utilisée pour n'importe quel type d'épicerie, mais la structure d'épicerie de Struct est spécifique pour cela seul et il est inutile de la réutiliser dans d'autres classes.
  • Visibilité: Toutes les fonctions d'une classe sont accessibles publiquement à ses objets.Par exemple, nous avons une fonction nommée 'choses' dans la classe 'magasin'. La fonction 'choses' est visible à tous ses objets, tels que 'épicerie,' magasin de papeterie ', etc. Une telle visibilité n'est pas possible avec Structures puisque les données de la structure sont limitées à elle-même et non visibles aux autres Structures. Pour clarifier les choses, nous pouvons dire que les données de 'grocery_entrance' ne sont pas publiquement visibles pour tous les autres magasins.
  • Passer par référence & Passer par valeur: Passer par référence envoie uniquement l'emplacement de mémoire et non les données réelles aux fonctions. Cela signifie que chaque fois que la valeur change, le changement est reflété dans les fonctions correspondantes. Passer par valeur, à son tour, envoie simplement la valeur à la fonction. Dans ce cas, une modification de la valeur après son envoi ne sera pas reflétée dans la fonction. Les utilisations de classe passent par référence et Struct utilise la valeur de passe.
  • Héritage: Les classes peuvent être héritées pour former des sous-classes, mais les Structures ne peuvent pas utiliser l'héritage. Par exemple, le Class Store donne ses fonctions à la sous-classe «épicerie». Mais la structure 'grocery_entrance' ne peut hériter d'aucune fonction. Nous pouvons dire qu'il n'y a pas de concept comme sous-struct ici.
  • Visibilité par défaut: Tous les membres d'une classe sont conservés en tant qu'entités privées par défaut, tandis que les membres d'une structure sont conservés en tant qu'entités publiques par défaut.
  • La taille d'une classe Class et Struct: vide utilise une taille de 1 octet même quand elle est vide, alors que Struct n'utilise jamais de mémoire lorsqu'elle est vide. Cela signifie que nous pouvons dire que la taille d'une structure vide est égale à 0 Bytes.
  • Récupération de place: La récupération de place est possible avec les classes, car elles utilisent le passage par référence. Par conséquent, il est plus facile de faire le nettoyage à un endroit où les données sont stockées. D'un autre côté, la récupération de place n'est pas possible avec Struct, car elle utilise le transfert par valeur et les données sont dispersées à différents endroits.
  • Gestion de la mémoire: Étant donné que Class permet les collectes de place, la gestion de la mémoire est également efficace. Cependant, ce n'est pas très efficace avec Structs.
  • Constructeur: Un constructeur initialise généralement la classe avec certaines valeurs spécifiées. Nous pouvons le regarder comme quelque chose qui a été initialisé avec des valeurs. Si une nouvelle classe doit être créée, le constructeur est appelé pour allouer de la mémoire pour cette instance. Nous pouvons même passer des valeurs en arguments tout en appelant un constructeur. Laissez-nous venir à notre discussion actuelle maintenant. Les classes autorisent les constructeurs de tous types, avec ou sans arguments, tandis que les structures autorisent uniquement les constructeurs avec des arguments, i. e. les constructeurs paramétrés.
  • Destructeur: Un destructeur est appelé chaque fois que nous devons supprimer une instance d'une classe. Le destructeur, à son tour, supprime cette instance et libère de la mémoire. Une classe peut utiliser un destructeur, contrairement à une structure.
  • Initialisation des variables membres: Dans Classes, nous pouvons initialiser directement les variables membres; une telle initialisation n'est pas possible avec Structs.
  • Création d'objet: La syntaxe générale pour la création d'objets dans les classes est:

Demo obj = new Demo ();

Cela signifie que nous devons utiliser le mot clé 'new' lors de la création d'objets d'une classe.Ceci n'est pas nécessaire lors de la création d'objets de Structs. Jetez un oeil à leur syntaxe:

Demo obj;

Cela fonctionne parfaitement même sans le mot clé 'nouveau'.

Quand utiliser la classe et quand utiliser Struct?

Comme les classes sont plus flexibles dans la manipulation des données et des fonctions, nous pouvons l'utiliser lorsque les objets utilisés sont complexes et volumineux. Dans notre exemple, un centre commercial peut utiliser la classe 'store' pour mieux exprimer le système. Les structures, cependant, sont limitées aux objets plus petits, car ils sont relativement moins efficaces que les classes. Par conséquent, si vous concevez votre propre magasin, les Structs sont le meilleur choix.

Comment convertir une structure en classe et vice versa?

Vous avez peut-être entendu les termes «boxe» et «déballage» pour convertir une structure en classe, et vice versa. Bien que ce soient des processus efficaces pour nous aider dans la conversion, ils doivent être manipulés avec prudence. Comme cela affecte directement les emplacements de mémoire, il y a un énorme impact sur les performances de notre système. De plus, cela affecte les processus de collecte des ordures et entraîne une inefficacité globale du système. Par conséquent, utilisez ces conversions uniquement lorsque cela est nécessaire.

Regardons les différences mentionnées ci-dessus sous forme tabulaire.

S. Non Concepts Différences
Classe Struct
1 Réutilisabilité Complètement réutilisable Non réutilisable
2 Visibilité < Toutes les fonctions d'une classe sont visibles à ses objets Les données d'un objet d'une structure ne sont pas visibles par d'autres objets de la même structure 3
Passer par Référence & passer par Valeur > Utilise Passe par la référence Utilise Passe par la valeur 4 Héritage
Les fonctions d'une classe peuvent être héritées par ses sous-classes; autorise l'héritage Ne permet jamais l'héritage 5 Visibilité par défaut
Tous les membres d'une classe sont privés par défaut Tous les membres d'une structure sont publics 6 Taille lorsque vide
La taille d'une classe vide est de 1 octet La taille de la structure vide est de 0 octet 7 Garbage Collection
Comme elle utilise le passage par référence, la collecte des ordures est possible Comme la valeur passe par valeur, la récupération de place n'est pas possible 8 Gestion de la mémoire
La facilité du processus de collecte des ordures contribue à une gestion efficace de la mémoire gestion de la mémoire 9 Constructeurs
Permet aux constructeurs de tous types, avec ou sans paramètres N'autorise que les constructeurs paramétrés 10 Destructeurs
Peut l'utiliser Impossible use it 11 Initialisation des variables membres
Permet l'initialisation directe des variables membres Ne permet pas l'initialisation directe des variables membres 12 < Création de l'objet Il est indispensable d'utiliser le mot clé 'new' lors de la création de l'objet
Le mot clé 'new' est facultatif lors de la création de l'objet 13 Quand? Mieux pour les objets plus grands et complexes où l'héritage est requis
Mieux pour les objets plus petits et plus simples où l'héritage a moins d'importance. Nous avons presque couvert toutes les différences entre Class et Struct, et si vous sentez que quelque chose manque, s'il vous plaît laissez-nous savoir. Apprenons ensemble et profitons de cette connaissance!