Types de classes anonymes
Les classes peuvent être anonymes, c’est-à-dire qu’elles peuvent être déclarées sans identificateur. Cela est utile lorsque vous remplacez un nom de classe par un typedef
nom, comme dans les éléments suivants :
typedef struct
{
unsigned x;
unsigned y;
} POINT;
Remarque
L'utilisation de classes anonymes indiquée dans l'exemple précédent est utile pour conserver la compatibilité avec un code C existant. Dans un code C, l’utilisation de typedef
structures anonymes est répandue.
Les classes anonymes sont également utiles lorsque vous souhaitez qu'une référence à un membre de classe apparaisse comme si elle n'était pas été contenue dans une classe distincte, comme dans l'exemple suivant :
struct PTValue
{
POINT ptLoc;
union
{
int iValue;
long lValue;
};
};
PTValue ptv;
Dans le code précédent, iValue
vous pouvez accéder à l’aide de l’opérateur de sélection de membre d’objet (.) comme suit :
int i = ptv.iValue;
Les classes anonymes sont soumises à certaines restrictions. (Pour plus d’informations sur les syndicats anonymes, consultez Unions.) Classes anonymes :
Ne peut pas avoir de constructeur ou de destructeur.
Impossible de passer en tant qu’arguments aux fonctions (sauf si le type case activée ing est vaincu à l’aide de points de suspension).
Ne peut pas être retourné comme valeurs de retour à partir des fonctions.
Structs anonymes
Section spécifique à Microsoft
Une extension Microsoft C vous permet de déclarer une variable de structure dans une autre structure sans lui donner un nom. Ces structures imbriquées sont appelées des structures anonymes. C++ n'autorise pas les structures anonymes.
Vous pouvez accéder aux membres d'une structure anonyme comme s'ils étaient des membres de la structure conteneur.
// anonymous_structures.c
#include <stdio.h>
struct phone
{
int areacode;
long number;
};
struct person
{
char name[30];
char gender;
int age;
int weight;
struct phone; // Anonymous structure; no name needed
} Jim;
int main()
{
Jim.number = 1234567;
printf_s("%d\n", Jim.number);
}
//Output: 1234567
FIN de la section spécifique à Microsoft
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour