C++ Abstract Declarators
 
C++ Abstract Declarators

An abstract declarator is a declarator in which the identifier is omitted. (For related information, see Type Names.)

The following abstract declarators are discussed in this section:

An abstract declarator is a declarator that does not declare a name — the identifier is left out. For example,

char *

declares the type “pointer to type char.” This abstract declarator can be used in a function prototype as follows:

char *strcmp( char *, char * );

In this prototype (declaration), the function’s arguments are specified as abstract declarators. The following is a more complicated abstract declarator that declares the type “pointer to a function that takes two arguments, both of type char *,” and returns type char *:

char * (*)( char *, char * )

Since abstract declarators completely declare a type, it is legal to form expressions of the form:

// Get the size of array of 10 pointers to type char.
size_t nSize = sizeof( char *[10] );

// Allocate a pointer to a function that has no
//  return value and takes no arguments.
typedef void (PVFN *)();
PVFN *pvfn = new PVFN;

// Allocate an array of pointers to functions that
//  return type WinStatus, and take one argument of
//  type WinHandle.
typedef WinStatus (PWSWHFN *)( WinHandle );
PWSWHFN pwswhfnArray[] = new PWSWHFN[10];
© 2010 Microsoft Corporation. All rights reserved.   Terms of Use | Trademarks | Privacy Statement
Page view tracker
Rate the Lightweight library
x
Lightweight builds on ScriptFree (loband) by adding features you've requested: a SearchBox and default code language selection.
Do you like the SearchBox?
Do you like the tabbed code blocks?
How useful is this topic?
Tell us more.
Thanks
x
You're helping to improve MSDN Online.
Feedback
Switch View
Classic
Lightweight Beta
ScriptFree
Switch View