Une légende urbaine
Une structure ne peut contenir de fonctions alors qu'une classe oui, me direz-vous !
C'est une légende urbaine fortement ancrée, au point que j'ai entendu des étudiants en informatique me fournir cette réponse.
Une structure peut contenir des fonctions
struct CStruct
{
int a;
int myFunction();
}
Créons une instance :
CStruct myStruct;
Utilisons la fonction
myStruct.myFunction();
La fonction est exécutée sans que le compilateur ne se plaigne.
Alors, quelle différence ?
La seule différence, est la visibilité des données membres.
Par défaut, dans une structure, les membres sont publics.
Ainsi, l'instruction myStruct.a = 1;
est valide.
Avec une classe, le compilateur génère une erreur car les membres sont par défaut privés.
class CClass
{
int a;
}
CClass myClass;
myClass.a = 1; // C'est interdit.
Pour accéder à la variable a, il faut la déclarer publique.
class CClass
{
public:
int a;
}
Conclusion
Par défaut, dans une structure, les membres sont déclarés publics. Dans une classe par défaut, ils sont déclarés privés.
Achetez mon ouvrage !
Mon PDF « Créer un planning perpétuel sur Microsoft Excel sans macro » est disponible à la vente.
Pour plus d’informations, rendez-vous sur la page dédiée.