Functions
功能
函数是C++实体,它们将陈述%28a功能体
%29加a名称
和一个零或更多的列表功能参数
...
二次
// function name: "isodd"
// parameter list has one parameter, with name "n" and type int
// the return type is bool
bool isodd(int n)
{ // the body of the function begins
return n % 2;
} // the body of the function ends
二次
调用函数时,例如在函数调用表达式,参数将根据调用地提供的参数%28初始化,或者违约%29和函数体中的语句被执行。
二次
int main()
{
for(int arg : {-3, -2, -1, 0, 1, 2, 3})
std::cout << isodd(arg) << ' '; // isodd called 7 times, each
// time n is copy-initialized from arg
}
二次
函数可以通过回归或通过投掷安例外...
阿功能声明可能出现在任何范围内,但功能定义可能只出现在命名空间范围中,或者成员和朋友函数,在类范围内。在没有朋友说明符的类主体中声明的函数是类成员函数。此类函数具有许多附加属性,请参见成员函数关于细节。
函数不是对象:没有函数数组,函数不能通过值传递或从其他函数返回。指针和对函数的引用是允许的,并且可以在函数本身不能使用的地方使用。
每个函数都有一个类型,由函数%27s返回类型、数组到指针后的所有参数%28的类型以及函数到指针的转换组成,请参见参数表%29,自C++17%29以来该函数是否为no,对于成员函数,则为cv限定和ref限定。函数类型也有语言链接没有cv限定函数类型%28与CV-合格函数如int f() const;
或函数返回简历-合格类型,如std::string
const f(29
%。
未命名函数可由Lambda-表达式...
同一作用域中的多个函数可能具有相同的名称,只要它们的参数列表和成员函数的cv/ref限定条件不同。这被称为功能过载.函数声明,由于C++17%29不能重载,因此返回类型和no以外规范%28的类型不同。
功能对象
除了函数lvalue,函数调用表达式还支持指向函数的指针、取消引用的指向成员函数的指针,Lambda-表达式,以及重载函数调用运算符的类类型的任何变量。这些类型一起被称为FunctionObject
斯,它们通过C++标准库被广泛使用,例如,参见BinaryPredicate
和Compare
...
标准库还提供了一些预定义的库。函数对象模板以及新的合成方法(包括%28)std::mem_fn
,,,std::bind
,和std::function
29%。
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。