Sdílet prostřednictvím


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í.

Viz také

Referenční dokumentace

typedef – specifikátor