C++ 抽象声明符
抽象声明符是其中省略了标识符的声明符。(有关相关信息,请参阅类型名称和声明符)尽管非抽象声明符用于对象或函数的声明,但去掉标识符只会留下类型信息。因此,抽象声明符具有将基类型(如 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 说明符可用于避免重复抽象声明符的语法过于冗长。