共用方式為


搭配使用 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 關鍵字宣告) 之間的差異比較明顯。 雖然在 typedef 陳述式中宣告無名稱結構的 C 作法仍然可用,但優勢不如在 C 中。

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

上述範例使用未命名的類別 typedef 語法宣告名為 POINT 的類別。 POINT 是類別名稱;不過,以此方式產生的名稱會受到下列限制:

  • 名稱 (同義字) 不可以出現在類別、struct 或等位前置詞之後。

  • 不可在類別宣告中使用此名稱做為建構函式或解構函式名稱。

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

請參閱

參考

typedef 規範