C++ 函数定义

函数定义与函数声明的不同之处在于它们提供的函数体 - 即组成函数的代码。 函数定义的格式是:

decl-specifiers declarator [cv-qualifers] [exception-specification]
{
   // function body
}
decl-specifiers declarator [cv-qualifers] =default;

decl-specifiers declarator [cv-qualifers] =delete;

定义的各个部分有:

  • 声明说明符,如函数声明所述。

  • 声明符(本文稍后介绍)。

  • 可选的 const 或 volatile 限定符。 在此上下文中,const 仅可用于类成员,指示函数将不会修改类的数据成员。

  • 异常规范,描述函数可能会引发的异常。 请参阅异常规范

  • 函数体,由大括号 {} 内的语句组成。

  • 显式默认定义情况下的 =default;。

  • 已删除定义情况下的 =delete;。

声明符的格式为:

  • 修改返回类型的可选指针或引用运算符。

  • 可选的 Microsoft 专用修饰符。 请参阅Microsoft 专用的修饰符

  • 函数名。 如果函数为类或结构的成员,则可以使用范围解析运算符来限定名称。

  • 括在括号 () 中的参数声明列表。

  • 对于构造函数,可选的构造函数初始值设定项(本文稍后介绍)。

有关这种情况下的声明符形式的信息,请参阅函数声明中关于返回函数指针的函数的注释。

在参数声明列表中声明的形参在函数体的范围中。

下图显示了函数定义的各个部分。 灰色区域是函数体。

函数定义部分

函数定义部分

该语法的构造函数初始值设定项元素仅用于构造函数中。 其用途是允许基类和所包含对象的初始化。 有关使用构造函数初始值设定项用法的详细信息,请参阅初始化基类和成员

只能为特殊的成员函数声明显式默认的定义。 当显式默认某一特殊成员函数时,实现过程会对它进行定义,就如同它具有隐式定义一样,除非它可能是非内联的(隐式声明的特殊成员函数始终是内联的)。 有关默认函数的详细信息,请参阅 对 C++11 功能的支持(现代 C++)中的“默认和已删除的函数”一节。

已删除的定义(也称为已删除的函数)是隐式内联的。 通过显式或隐式方式(而非声明方式)引用已删除函数的程序格式不正确。 有关已删除函数的详细信息,请参阅 对 C++11 功能的支持(现代 C++)中的“默认和已删除的函数”一节。

请参见

参考

声明符

概念

针对函数的依赖于参数的名称 (Koenig) 查找