Tipos de classe anônima
As classes podem ser anônimas, ou seja, podem ser declaradas sem um identificador. Isso é útil quando você substitui um nome de classe por um nome de typedef
, como abaixo:
typedef struct
{
unsigned x;
unsigned y;
} POINT;
Observação
O uso de classes anônimas mostradas no exemplo anterior é útil para preservar a compatibilidade com o código C existente. Em alguns códigos C, o uso de typedef
em conjunto com estruturas anônimas será prevalente.
As classes anônimas também são úteis quando você quer que uma referência a um membro da classe apareça como se não estivesse contida em uma classe separada, como a seguir:
struct PTValue
{
POINT ptLoc;
union
{
int iValue;
long lValue;
};
};
PTValue ptv;
No código anterior, iValue
pode ser acessado usando o operador de seleção de membro de objeto (.) como segue:
int i = ptv.iValue;
As classes anônimas estão sujeitas a determinadas restrições. (Para obter mais informações sobre uniões anônimas, confira Uniões). Classes anônimas:
Não é possível ter um construtor ou um destruidor.
Não é possível ser transmitido como argumentos para as funções (a menos que a verificação de tipo seja anulada usando reticências).
Não é possível ser retornado como valores de retorno de funções.
Structs anônimos
Seção específica da Microsoft
Uma extensão do Microsoft C permite que você declare uma variável de estrutura dentro de outra estrutura sem nomeá-la. Essas estruturas aninhadas são chamadas de estruturas anônimas. O C++ não permite estruturas anônimas.
Você pode acessar os membros de uma estrutura anônima como se fossem membros da estrutura que os contém.
// 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
Fim da seção específica da Microsoft
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de