C++ 抽象宣告子
抽象宣告子是省略識別項的宣告子 (如需相關資訊,請參閱類型名稱和宣告子)。雖然非抽象宣告子用於宣告物件或函式,但刪除識別項會只留下類型資訊。因此,抽象宣告子具有修改 char 等基底類型的效果,以指定更複雜的類型,例如 char 或 char 陣列的指標。所以,此類宣告子一律搭配使用基底類型名稱,而且只有在呼叫指標、陣列或參考類型時使用 (包括傳回該基底類型之函式的指標)。本節討論與下列項目對應的抽象宣告子:
抽象宣告子是不宣告名稱 (省略識別項) 的宣告子。 例如:
char *
指定類型 char 的類型指標。類型名稱包括基底類型名稱 char 加上抽象宣告子 *。
同樣地,參考的抽象宣告子是 & 運算子,並且使用方括號指定陣列類型。只要套用宣告子的語法並移除識別項,即可指定任何類型。
char & // reference to char
char[5] // array of char
下列是較複雜的抽象宣告子用法,此用法會宣告採用兩個引數、兩個 char * 類型並傳回 char * 類型之函式的類型指標:
char * (*)( char *, char * )
抽象宣告子搭配基底類型指定名稱可以完全宣告類型。在任何呼叫類型的位置,都可使用從抽象宣告子建構的類型名稱:
// Get the size of array of 10 pointers to type char.
size_t nSize = sizeof( char *[10] );
// cast fptr to pointer to function that takes two arguments, both of type
// pointer to char
i = (char * (*)(char*, char*)) fptr;
typedef 指定名稱可用來避免重複抽象宣告子的複雜語法。