En C ++ et dans d'autres langages influencés, il existe une construction appelée Structure ( struct
) et une autre appelée class
. Les deux sont capables de contenir des fonctions et des variables. Quelques différences:
- La classe reçoit de la mémoire dans le tas et de la
struct
mémoire dans la pile (remarque: c'est faux pour C ++, mais peut-être correct dans ce que l'OP a appelé "langages influencés") - Les variables de classe sont privées par défaut et
struct
elles sont publiques
Ma question est: a été en struct
quelque sorte abandonné pour la classe? Si oui, pourquoi? Outre les différences ci-dessus, a struct
peut faire toutes les mêmes choses qu'une classe. Alors pourquoi l'abandonner?
c++
object-oriented
prometheuspk
la source
la source
Réponses:
Il n'est pas du tout abandonné. En fait, même les langages modernes comme C # qui font un usage
class
intensif de vous offrent toujoursstruct
. Quant au moment où il est utile de choisir l'un plutôt que l'autre, je vous renvoie à cet article:Choisir entre les classes et les structures
Extrait de l'article MSDN:
la source
Vous vous trompez sur C ++: la seule différence significative entre classe et struct est la différence de spécificateur d'accès par défaut. Struct et classe sont à toutes fins utiles synonymes, je crois que struct est conservé pour une compatibilité ascendante avec C.
la source
le langage D a créé une plus grande distinction entre classe et struct
une structure en d n'est rien d'autre qu'un enregistrement de données alloué par pile avec quelques fonctions que vous pouvez appeler dessus (il n'y a pas d'option d'héritage à moins que vous n'utilisiez une configuration enum + union c'est-à-dire implémentez vous-même le polymorfisme) qui est passé par valeur
une classe est comme nous sommes habitués à: fonctions virtuelles, allocation de tas, héritage (unique), passé par ref
la source