Použití výrazu typedef s typy třídy
Použití specifikátoru typedef spolu s typy tříd je podporováno ve velkém, kvůli postupům ANSI C při deklarování nepojmenovaných struktur u deklarací typedef.Mnoho programátorů jazyka C, používá například následující:
// typedef_with_class_types1.cpp
// compile with: /c
typedef struct { // Declare an unnamed structure and give it the
// typedef name POINT.
unsigned x;
unsigned y;
} POINT;
Výhodou takovéto deklarace je, že umožňuje deklaraci jako je:
POINT ptOrigin;
místo:
struct point_t ptOrigin;
V jazyce C++, je rozdíl mezi názvy typedef a reálnými typy (deklarovanými klíčovými slovy class, struct, union a enum) zřetelný.Přestože postup jazyka C deklarace struktury bez názvu v příkazu typedef stále funguje, neposkytuje žádné konvenční výhody, jako v jazyce C.
// typedef_with_class_types2.cpp
// compile with: /c /W1
typedef struct {
int POINT();
unsigned x;
unsigned y;
} POINT;
Předchozí příklad deklaruje třídu s názvem POINT pomocí syntaxe nepojmenované třídy typedef.POINT je považován za název třídy. Na názvy zavedené tímto způsobem se však vztahují následující omezení:
Název (synonymum) se nemůže objevit po předponě class, struct nebo union.
Název nelze použít jako název konstruktoru nebo destruktoru v deklaraci třídy.
Tato syntaxe v souhrnu neposkytuje žádný mechanismus dědičnosti, vytvoření nebo zničení.