具有類別型別的 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,或等位前置詞。
名稱不能在類別宣告中的建構函式或解構函式名稱。
總而言之,這種語法並不提供任何繼承、 建構或解構的機制。