共用方式為


具有類別型別的 typedef 的使用

使用typedef與類別型別規範支援主要是因為 ANSI C 練習的宣告未命名的結構中的typedef宣告。 比方說,許多 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;

這類宣告的優點是它可讓類似的宣告:

POINT ptOrigin;

而非:

struct point_t ptOrigin;

在 C++,之間的差異typedef名稱和真實的型別 (以宣告類別, struct, 等位,以及enum關鍵字) 會比較明顯。 雖然 「 C 」 的宣告中沒有名稱的結構實務typedef陳述式仍能運作,同時也會讓任何標記的好處,那般 c。

// typedef_with_class_types2.cpp
// compile with: /c /W1
typedef struct {
   int POINT();
   unsigned x;
   unsigned y;
} POINT;

上述範例中宣告的類別,名為POINT使用未命名的類別typedef語法。 POINT會被視為類別名稱。 然而,引入這種方式的名稱來套用下列限制:

  • 名稱 (同義字) 不能出現在類別, struct,或等位前置詞。

  • 名稱不能在類別宣告中的建構函式或解構函式名稱。

總而言之,這種語法並不提供任何繼承、 建構或解構的機制。

請參閱

參考

typedef 規範