Anonymní typy třídy
Třídy mohou být anonymní – to znamená, že je lze deklarovat bez identifikátoru. To je užitečné, když nahradíte název typedef
třídy názvem, jako v následujícím příkladu:
typedef struct
{
unsigned x;
unsigned y;
} POINT;
Poznámka
Použití anonymních tříd uvedené v předchozím příkladu je užitečné pro zachování kompatibility se stávajícím kódem jazyka C. V některých kódech jazyka C je použití typedef
ve spojení s anonymními strukturami rozšířeno.
Anonymní třídy jsou také užitečné, pokud chcete odkazovat člena třídy, jako by nebyl obsažen v samostatné třídě (viz následující příklad):
struct PTValue
{
POINT ptLoc;
union
{
int iValue;
long lValue;
};
};
PTValue ptv;
V předchozím kódu iValue
lze získat přístup pomocí operátoru výběru člena objektu (.) následujícím způsobem:
int i = ptv.iValue;
Na anonymní třídy se vztahují jistá omezení. (Další informace o anonymních sjednoceních najdete v tématu Sjednocení.) Anonymní třídy:
Nemohou mít konstruktor ani destruktor.
Funkci nelze předat jako argumenty (pokud není kontrola typu poražena pomocí tří teček).
Nelze je vrátit jako návratové hodnoty funkcí.
Anonymní struktury
Specifické pro Microsoft
Rozšíření jazyka Microsoft C umožňuje deklarovat proměnnou struktury v jiné struktuře bez zadání názvu. Tyto vnořené struktury se nazývají anonymní struktury. Jazyk C++ nepovoluje anonymní struktury.
Ke členům anonymní struktury lze přistupovat, jako kdyby byly členy obsahující struktury.
// 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
END Microsoft Specific
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro