完整的系列
函数的 "什么 "和 "为什么"?
一个函数是一个包含一组语句的命名引用。函数的概念是,你有一组在你的代码中某些地方重复出现的语句,你用一个函数来代替这些语句。这里有一个例子。
int random_value = rand % 10 + 1;
statement;
statement;
random_value = rand % 5 + 1;
statement;
statement;
random_value = rand % 20 + 1;
在上面的代码中,你生成了一个具有不同间隔的随机值,1-10,1-5,1-20。将其分解为一个函数是有意义的,就像这样。
int getRandomValue(int range)
{
return rand % range + 1;
}
那么你的代码就可以简化成这样。
int random_value = getRandomValue(10);
statement;
statement;
random_value = getRandomValue(5);
statement;
statement;
random_value = getRandomValue(20);
一个额外的好处是,你的代码也更易读,getRandomValue() ,比起其他函数更容易理解。rand() % 20 + 1
函数
好了,现在我们明白了函数的作用,让我们慢慢来解释一下什么是函数。一个函数需要一个名称、括号和一个返回类型。此外,它需要以大括号开始和结束,像这样。
<return type> <name>() {}
上述的一个更真实的例子是这样的。
int getRandomValue()
{
/* body */
}
关于函数,你需要知道几个概念,比如。
- 头部,这是函数的一部分,你在这里声明它的名称、返回类型和参数,即你想传入函数的值。下面是上述代码中的标题。
int getRandomValue()
- body, 函数的主体是事情发生的地方,你希望函数做什么。主体内容被定义在大括号内。
return rand % range + 1;
- definition = body + header,标题和正文组成了所谓的函数定义,像这样。
int getRandomValue()
{
return rand % range + 1;
}
如果你眼尖,你可能会注意到range ,这是因为它是一个参数,我们还没有定义它。
- 参数,参数是一个占位符,一个能够存储被传入函数的名称和类型。这里,
range是参数。
int getRandomValue(int range)
{
return rand % range + 1;
}
- 调用,为了调用一个函数,我们需要用它的名字调用它,并为我们可能定义的任何参数提供值。要调用
getRandomValue,我们需要在range参数中加入小括号和所谓的参数(一个值)。
getRandomValue(10)
10是参数,是值,它被绑定到range 参数上。你可以向一个函数声明许多参数,例如,像这样。
int add(int x, int y)
{
return x + y;
}
并像这样调用它。add(2,2)
从一个函数中返回
到目前为止,你已经看到了如何声明函数,给它添加几个参数,但函数还有一个重要的部分,即它的返回。一个函数必须有一个返回类型,它要么是void ,要么是一个数据类型,像这样。
void printSomething(string message)
{
cout << message;
}
如果返回类型不是void ,那么你需要在函数主体的某个地方有一个return 语句,在那里你返回值,像这样。
int add(int lhs, int rhs)
{
return lhs + rhs;
}
如果没有return 关键字,你会得到一个编译错误。
重载,同一个函数被多次定义,但参数不同
当你定义了一个头,比如说,像这样。
int add(int a, int b)
{
}
你有两个参数,如果你需要三个或四个参数呢,我是否需要为每个方法定义一个新的函数?幸运的是,不是的,你可以_overload_the function,也就是说,你确实定义了更多的函数,但它们都有相同的名字,不同的是它们有不同数量的参数,像这样。
int add(int a, int b)
{
return add(a,b,0);
}
int add(int a, int b, int c)
{
return add(a,b,c, 0);
}
int add(int a, int b, int c, int d)
{
return a + b + c + d;
}
所有这些代码使我们能够在需要时使用我们想要的版本add() 。下面是一个使用所有四个变体的例子。
int sum = add(2,3); // 5
sum = add(2,3,4); // 9
add(2,3,4,5) // 4