Użycie typedef z typami klasy
Użycie specyfikatora typedef z typami klas jest obsługiwane głównie z powodu praktyk deklarowania nienazwane struktur ANSI C w deklaracjach typedef.Na przykład wielu programistów C postępuje w następujący sposób:
// 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;
Zaletą takiej deklaracji jest możliwość deklaracji, takich jak:
POINT ptOrigin;
zamiast:
struct point_t ptOrigin;
W języku C++, różnica między nazwami typedef i prawdziwymi typami (zadeklarowanymi za pomocą słów kluczowych class, struct, union i enum) jest bardziej wyraźna.Mimo że praktyki C deklarowania struktury bez nazwy w instrukcji typedef nadal działa, nie zapewnia to żadnych korzyści jak w języku C.
// typedef_with_class_types2.cpp
// compile with: /c /W1
typedef struct {
int POINT();
unsigned x;
unsigned y;
} POINT;
Poprzedni przykład deklaruje klasę o nazwie POINT za pomocą składni klasy bez nazwy typedef.POINT jest traktowana jako nazwa klasy; jednak do nazw wprowadzonych w ten sposób obowiązują następujące ograniczenia:
Nazwa (synonim) nie może występować po prefiksach class, struct lub union.
Nazwa nie może być użyta jako konstruktor lub destruktor w deklaracji klasy.
Podsumowując ta składnia nie zapewnia żadnego mechanizmu dziedziczenia, budowa lub niszczenia.