Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 la vérification de type est annulée à 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