函数(function)是把一个语句序列(函数体, function body)关联到一个名字和零或更多个 函数形参(function parameter)的列表的 C++ 实体。
函数声明将引入函数名和它的类型。函数定义将函数名和类型与函数体关联。
函数声明
函数声明是一种简单声明,可以在任何作用域出现。它的语法结构和简单声明一样,由 声明说明符序列 与函数的 声明符 组成。声明说明符序列 描述了函数的返回类型即该声明函数的其他一些性质。函数的 声明符 的语法结构为:
非指针声明符 ( 形参列表 ) cv限定符(可选) 引用限定符(可选) 异常说明(可选) 属性(可选)
非指针声明符 即任意合法声明符,但如果它以 *、& 或 && 起始,那么就必须用括号环绕它。
形参列表 即由函数形参组成的逗号分隔列表,可以为空。
在 C++11 之后,函数声明符可以使用尾随返回类型,语法结构为:
非指针声明符 ( 形参列表 ) cv限定符(可选) 引用限定符(可选) 异常说明(可选) 属性(可选) -> 尾随返回类型
尾随返回类型 可以用来简化返回类型复杂的函数。
函数定义
非成员函数的定义只能出现在命名空间作用域中,成员函数的定义亦可出现在类定义的体内。函数定义的语法结构为:
属性(可选) 声明说明符序列(可选) 声明符 虚声明符序列(可选) 函数体
函数体 可以是不同的结构,它包含了以下形式:
- 构造函数初始化器(可选) 复合语句
- 函数-try-块
- = delete ; (C++11 起)
- = default ; (C++11 起)
复合语句即为常规的函数体。函数-try-块用于异常处理。 C++11 后新加的两个特性使函数可以被定义为弃置函数与预制函数。