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++)中的“默认和已删除的函数”一节。