函数声明语法
函数可以是类或结构的全局或成员。使用以下顺序,声明:
[friend] [storage-class-specifier] [function-specifier]
[[cv-qualifer] type-specifier] declarator [cv-qualifer]
[exception-spec]
[friend] [storage-class-specifier] [function-specifier]
[[cv-qualifer] type-specifier] [*|&] [ms-modifer] identifier
( argument-list ) [cv-qualifer] [exception-spec]
声明说明符。说明符参见。
在类中,一种选项 friend 说明符。
一种选项存储类说明符。对于全局函数,允许的存储类说明符是 静态 和 extern。对于类成员函数, 外部 不允许的。
一个可选功能说明符。对于全局函数,唯一允许的函数说明符是 **内联。**对于类成员函数, 虚拟 和 内联 允许,因此,构造函数, 显式。
类型指示返回的类型说明符 (受为指针的修改约束或引用类型使用 * 或 )。
声明。
选项指针或引用修改返回类型的运算符
指定调用约定的可选特定于 Microsoft 的修饰符。请参见 特定于 Microsoft 的修饰符。
函数名。如果函数为类或结构的成员,请使用范围解析运算符,该名称可以限定。
参数列表的说明括号内包含的 ()。
可选常数或变量的限定符。在此上下文中, const 能为类成员仅使用和使用指示功能不会修改类的数据成员。
如果返回类型为函数指针,该声明的语法可能比较复杂,如下所述。
- 可选异常规范指示异常函数引发。异常规范参见。
声明标识符的类型,可能构造如下所示:常数或变量 (如果指定) 函数,带有指定参数列表,返回声明说明符表示的类型。
下面的示例演示两个简单的函数声明):
char *strchr( char *dest, char *src );
static int atoi( const char *ascnum ) const;
声明返回指针的函数给函数
建议 typedef 用于声明函数指针类型的别名,如果声明返回函数指针类型的函数。例如
typedef int (*fp)(int);
fp myFunction(char* s); // function returning function pointer
如果这不执行,函数声明的正确语法可以从函数指针的声明语法推导通过替换为标识符 (在上述示例中的fp ) 将函数名,而参数列表,如下所示:
int (*myFunction(char* s))(int);
上面的声明与声明等效使用上面 typedef。