Tipos de clase anónima
Las clases pueden ser anónimas, es decir, se pueden declarar sin un identificador. Esto es útil cuando se reemplaza un nombre de clase por un nombre typedef
, como en el siguiente ejemplo:
typedef struct
{
unsigned x;
unsigned y;
} POINT;
Nota:
El uso de las clases anónimas que se muestra en el ejemplo anterior es útil para mantener la compatibilidad con el código de C existente. En algún código de C, es frecuente el uso de typedef
junto con estructuras anónimas.
Las clases anónimas también son útiles cuando se desea que una referencia a un miembro de clase aparezca como si no estuviera contenida en una clase independiente, como en el siguiente ejemplo de código:
struct PTValue
{
POINT ptLoc;
union
{
int iValue;
long lValue;
};
};
PTValue ptv;
En el código anterior, se puede acceder a iValue
usando el operador de selección de miembros de objeto (.) del modo siguiente:
int i = ptv.iValue;
Las clases anónimas están sujetas a determinadas restricciones. (Para más información sobre las uniones anónimas, consulte Uniones). Clases anónimas:
No pueden tener un constructor o un destructor.
No se pueden pasar como argumentos a funciones (a menos que la comprobación de tipos se rechace mediante el uso de puntos suspensivos).
No se pueden devolver como valores devueltos de funciones.
Structs anónimos
Específicos de Microsoft
Una extensión de Microsoft C permite declarar una variable de estructura dentro de otra estructura sin darle un nombre. Estas estructuras anidadas se denominan estructuras anónimas. C++ no permite estructuras anónimas.
Puede tener acceso a los miembros de una estructura anónima como si fueran miembros de la estructura contenedora.
// 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 Específicos de Microsoft
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de