Structure versus classe en langage c++

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.