Udostępnij za pośrednictwem


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.

Zobacz też

Informacje

typedef — specyfikator