En C, oui, ils sont la même adresse. Simple et direct.
En C++, non, ils n'ont pas la même adresse. Les classes de base peuvent (et je suppose que c'est le cas) venir avant tous les membres, et les fonctions de membres virtuels ajoutent généralement des données cachées à la structure quelque part. Encore plus confus, un compilateur C++ peut également réorganiser les membres à volonté, sauf si la classe est un type de mise en page standard (bien que je ne sache pas qu'un seul compilateur le fasse)
Enfin, si la structure C++ est composée de standard types de présentation, ne contient pas de classes de base ni de fonctions virtuelles et tous les membres ont la même visibilité, et éventuellement d'autres limitations que j'ai oublié, puis il retombe sur les règles C, et exige que le premier membre soit à la même adresse que le objet lui-même.
§ 9,2/7
Une classe standard de mise en page est une classe qui:
- n'a pas d'éléments de données non statiques de type classe non-standard de mise en page (ou réseau de tels types) ou référence,
- n'a pas de fonctions virtuelles (10.3) et pas de classes de base virtuelles (10.1),
- a le même contrôle d'accès (Clause 11) pour tous les éléments de données non statiques,
- n'a pas non normalisation classes de base de mise en page,
- l'une ou l'autre n'a aucun membre de données non statiques
- n'a pas de classes de base du même type que le premier membre de données non statiques et ne possède aucune classe de base avec des membres de données non statiques. .
§ 9.2/20
un pointeur vers un objet struct standard mise en page, converti de manière appropriée en utilisant un reinterpret_cast, les points à son élément initial (ou si ce membre est un champ binaire, puis à l'unité dans laquelle il réside) et vice versa. [Note: Il peut donc y avoir un bourrage sans nom dans un objet struct de mise en page standard, mais pas au début, comme nécessaire pour obtenir un alignement approprié. -end note]
Ils ne sont pas les mêmes à cet égard –
@MooingDuck: Eh bien, cela dépend de ce que le '...' est. Pour la même définition de structure, C++ la traitera de la même manière que les structures C (C répondent toujours à l'exigence C++ * standard-layout *). –