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
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)
typedef struct {
int x;
int y;
} Point;
// Pas de méthodes, uniquement des données.
En C++ (avec une classe)
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++.
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 ! 😊