51 votes

C++ - struct vs. class

Duplicatas possibles :
Structures et classes en C/C++
Que sont les types POD en C++ ?

Salut,

Dans le Livre C++ In a Nutshell en chapitre 6 : classes , unders Spécification d'accès a mentionné les points suivants :

Dans une définition de classe, l'accès par défaut par défaut pour les membres et les classes de base est privé. Dans une définition de structure, l'accès par par défaut est public. C'est la seule différence entre une classe et une struct bien que, par convention, certains programmeurs programmeurs utilisent struct uniquement pour POD classes et utiliser la classe pour toutes les autres classes .

Mes questions sont les suivantes :

  • N'y a-t-il pas une autre différence entre les classes et les structures dans le sens où les structures ne contiennent pas de fonctions mais seulement des données ?
  • Que sont les classes POD ? Et, qu'est-ce que l'on entend par toutes les autres classes ici ? Existe-t-il alors des classes spéciales ?

Merci.

94voto

Simon Richter Points 11471

L'autre différence est que

template<class T> ...

est autorisé, mais

template<struct T> ...

ne l'est pas.

40voto

BlueMonkMN Points 10838

Vous pouvez vous prouver qu'il n'y a pas d'autre différence en essayant de définir une fonction dans une structure. Je me souviens que même mon professeur de collège qui enseignait les structs et les classes en C++ était surpris d'apprendre cela (après avoir été corrigé par un étudiant). Je le crois pourtant. C'était assez amusant. Le professeur n'arrêtait pas de dire quelles étaient les différences et l'étudiant continuait de dire "en fait, on peut aussi faire ça dans une structure". Finalement, le professeur a demandé "OK, quelle est la différence" et l'étudiant lui a répondu que la seule différence était l'accessibilité par défaut des membres.

Une recherche rapide sur Google suggère que POD est l'abréviation de "Plain Old Data".

8voto

Sriram Points 3739

Les classes POD sont des classes de données ordinaires qui n'ont que des membres de données et rien d'autre. Il y a quelques questions sur stackoverflow à ce sujet. En trouver une aquí .

De plus, vous pouvez avoir des fonctions comme membres de structs en C++, mais pas en C. Vous devez avoir des pointeurs vers les fonctions comme membres de structs en C.

3voto

René Nyffenegger Points 14898

Ok, POD signifie de simples données . Cela fait généralement référence à structs sans toutes les méthodes, car ces types sont ensuite utilisés pour structurer plusieurs données qui vont ensemble.

Quant aux structs, ils n'ont pas de méthodes : J'ai vu plus d'une fois qu'un struct avait des méthodes, et je ne pense pas que cela soit contre nature.

2voto

knivil Points 670

1) C'est la seule différence en C++.

2) POD : de simples données Autres classes -> pas de POD

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X