New
peux-tu expliquer la différence entre un struct en C et une classe ?
Jan 12, 2:28pm

Bien sûr, Paul ! Voici une explication claire et concise des différences entre un struct en C et une classe (notamment en C++) :


1. Origine et Langage

  • struct en C :

    • Présent dès le langage C.
    • Utilisé pour regrouper des données de types différents sous un même nom.
    • Pas de méthodes (fonctions) : uniquement des champs de données.
  • Classe (C++, Java, C#, etc.) :

    • Introduite avec la programmation orientée objet (POO).
    • En C++, une classe est une extension d’un struct avec des fonctionnalités supplémentaires.
    • Contient des données (attributs) et des méthodes (fonctions).

2. Fonctionnalités Clés

Données
Oui (champs)
Oui (attributs)
Méthodes (fonctions)
Non
Oui
Encapsulation
Non (tout est public par défaut)
Oui (public/private/protected)
Héritage
Non
Oui
Constructeurs/Destructeurs
Non
Oui
Polymorphisme
Non
Oui (via fonctions virtuelles, etc.)

3. Exemple en C et C++

En C (avec un struct)

c
typedef struct { int x; int y; } Point; // Pas de méthodes, uniquement des données.

En C++ (avec une classe)

cpp
class Point { private: int x, y; // Données encapsulées public: // Méthodes (fonctions) void setX(int val) { x = val; } int getX() { return x; } };

4. Cas Particulier : struct en C++

En C++, un struct est presque identique à une classe, sauf que :

  • Par défaut, les membres sont public dans un struct et private dans une classe.
  • On peut ajouter des méthodes, de l’héritage, etc. à un struct en C++.
cpp
struct Point { int x, y; // Public par défaut void afficher() { std::cout << x << ", " << y; } };

5. Quand Utiliser Quoi ?

  • struct en C : Pour regrouper des données simples (ex : coordonnées, enregistrements).
  • Classe (C++) : Pour modéliser des objets avec des comportements (méthodes) et de l’encapsulation.
  • struct en C++ : Pour des structures de données simples où tout est public (ex : POD - Plain Old Data).

Résumé

  • C : struct = données uniquement.
  • C++ : class = données + méthodes + encapsulation, struct = comme une classe mais avec membres publics par défaut.

Si tu veux approfondir un point en particulier ou voir un exemple plus complexe, n’hésite pas à demander ! 😊

Jan 12, 2:28pm

This Chat is read-only. Login to resume chatting.

typedef struct { int x; int y; } Point; // Pas de méthodes, uniquement des données.
class Point { private: int x, y; // Données encapsulées public: // Méthodes (fonctions) void setX(int val) { x = val; } int getX() { return x; } };
struct Point { int x, y; // Public par défaut void afficher() { std::cout << x << ", " << y; } };