Logo
Section 1 / 7

函数声明

在本节中,我们将了解C++中函数的作用。

导入

函数声明

在本节中,我们将了解C++中函数的作用。

定义

一个函数是一组语句和操作的集合。与变量一样,函数也有名称。当函数被调用时,其内部的语句序列将被执行。

声明规则

  • 函数名称应能体现其实际功能。

  • 函数声明包括返回类型、名称以及一组参数(可选)。

  • 函数的签名指的是其名称和参数列表。

  • 函数可以接受值、指针或引用作为参数。

  • 函数可以是静态的,其返回值可以为 const 或 volatile。

下面是一个 swap 函数的示例:

1#include <iostream> 2 3void swap(int& fir, int& sec){ 4 int tmp(fir); 5 fir = sec; 6 sec = tmp; 7} 8 9int main() { 10 int a{2011}; 11 int b{2014}; 12 std::cout << "a: " << a <<", b: " << b << std::endl; 13 swap(a, b); // 函数调用 14 std::cout << "After swap" << std::endl; 15 std::cout << "a: " << a <<", b: " << b << std::endl; 16}

函数会为其参数创建副本。因此,默认情况下,函数外部的原始变量不会被修改。若要修改原变量,函数必须通过引用传递参数,如上述第3行所示。

函数的替代语法

随着 auto 的引入,C++ 提供了一种使用箭头语法的新函数写法:

1auto func( para ) -> returntype { functionbody } 2auto sum(int a, int b) -> int { return a + b;} 3 4int sum(int a, int b) { return a + b;} // 旧语法

在 C++11 中,如果函数声明中使用了 auto 关键字,则必须采用这种箭头语法。

默认参数

函数参数允许我们向函数传递实参,这些实参可在函数体内部用于执行操作。

为了方便使用,C++ 允许为函数参数指定默认值。当调用函数时未显式提供某个参数的值,则使用该参数的默认值。

每个默认参数在函数签名中通过 = 操作符进行定义。

1bool isTempOK(const int t, const int low = 20, const int high = 50);

此处,low 的默认值为 20,high 的默认值为 50。考虑以下函数调用:

1isTempOK(100, 21);

100 将被赋给 t,21 将替换 low 的默认值。由于未指定 high 的值,因此使用默认值 50。这表明在函数调用中,参数值是按从左到右的顺序进行分配的。

具有默认值的参数必须位于参数列表的末尾,即必须放在参数列表的右侧。

内存管理

示例