En C++, les structures (struct) et les classes (class) sont presque identiques. La seule différence fondamentale réside dans la visibilité par défaut : struct est publique par défaut, class est privée par défaut.
En C++, struct et class sont équivalents, à ceci près que dans une struct les membres sont public par défaut, alors que dans une class ils sont private par défaut.
Différences importantes entre C et C++
Le tableau suivant résume les extensions apportées aux structures en C++ par rapport au C :
| Fonctionnalité | struct C | struct C++ |
|---|---|---|
Mot-clé struct obligatoire pour déclarer une variable | ✅ Oui | ❌ Non (optionnel) |
| Fonctions membres | ❌ Non | ✅ Oui |
| Initialisation directe des données membres | ❌ Non | ✅ Oui |
| Constructeurs | ❌ Non | ✅ Oui |
| Membres statiques | ❌ Non | ✅ Oui |
Modificateurs d'accès (public, private, protected) | ❌ Non | ✅ Oui |
1. Utilisation du mot-clé struct
En C, déclarer une variable nécessite le préfixe struct. En C++, le nom de la structure seul suffit.
// C : obligatoire
struct etudiant et;
// C++ : optionnel
etudiant et;2. Fonctions membres
Les structures C ne peuvent pas contenir de fonctions membres. En C++, elles le peuvent.
struct etudiant {
int age;
void setAge(int v) { age = v; }
int getAge() { return age; }
};p1.c:5:5: error: expected ':', ',', ';', '}' before '{' token3. Initialisation directe des données
// Interdit en C, autorisé en C++
struct etudiant {
int age = 15;
};4. Constructeurs dans la structure
// C++ uniquement
struct etudiant {
int age;
etudiant(int val) { age = val; }
};
int main() {
etudiant et(15);
cout << et.age << endl;
return 0;
}5. Membres statiques
// C++ uniquement
struct etudiant {
int age;
static int code;
};p1.c:5:5: error: expected specifier-qualifier-list before 'static'
6. Modificateurs d'accès
// C++ uniquement
struct etudiant {
private:
int age;
public:
int code;
};p1.c:4:5: error: expected specifier-qualifier-list before 'private'
En C++, préférez class à struct dès que vous avez besoin d'encapsulation (membres privés, constructeurs, méthodes). Réservez struct aux agrégats simples de données sans logique.
Discussion (0)
Soyez le premier à laisser un commentaire !
Laisser un commentaire
Votre commentaire sera visible après modération.