C++ 函数 (Functions in C++)
                           
天天向上
发布: 2025-03-28 00:10:05

原创
454 人浏览过

函数是 C++ 中的基本构造块之一,它可以封装一段代码,通过调用函数来重复执行某些操作。函数能够提高代码的可读性、可维护性和重用性。

1. 函数定义

在 C++ 中,函数的定义包括以下几个部分:

  • 返回类型 (Return Type): 指定函数返回的数据类型。
  • 函数名 (Function Name): 用于标识函数的名字。
  • 参数列表 (Parameters): 包括函数接收的输入数据(可选)。
  • 函数体 (Function Body): 包括函数的代码块,定义了函数的操作。

语法

return_type function_name(parameter_list) {
    // 函数体
    // 执行任务
}

示例:定义一个简单的函数

#include <iostream>
using namespace std;

void sayHello() {
    cout << "Hello, C++!" << endl;
}

int main() {
    sayHello();  // 调用函数
    return 0;
}

输出:

Hello, C++!

2. 函数返回值

函数可以有返回值,返回类型可以是 intfloatdouble 等基本数据类型,也可以是自定义类型。

返回值类型

如果函数需要返回值,必须指定返回类型,函数体内使用 return 语句来返回结果。

示例:带返回值的函数

#include <iostream>
using namespace std;

int add(int a, int b) {
    return a + b;  // 返回两个数的和
}

int main() {
    int result = add(5, 3);  // 调用函数
    cout << "The sum is: " << result << endl;  // 输出返回值
    return 0;
}

输出:

The sum is: 8

3. 函数参数

函数参数可以是值传递,也可以是引用传递。值传递是将参数的副本传递给函数,引用传递则是将参数本身传递给函数。

值传递

在值传递中,函数对参数的修改不会影响原始数据。

示例:值传递

#include <iostream>
using namespace std;

void modifyValue(int a) {
    a = 10;  // 修改参数
}

int main() {
    int x = 5;
    modifyValue(x);  // 调用函数
    cout << "Value of x: " << x << endl;  // 输出原始值
    return 0;
}

输出:

Value of x: 5

在这里,x 的值没有改变,因为参数是按值传递的。

引用传递

通过引用传递参数时,函数对参数的修改会影响原始数据。引用传递需要使用 & 符号来指定。

示例:引用传递

#include <iostream>
using namespace std;

void modifyValue(int &a) {
    a = 10;  // 修改参数
}

int main() {
    int x = 5;
    modifyValue(x);  // 调用函数
    cout << "Value of x: " << x << endl;  // 输出修改后的值
    return 0;
}

输出:

Value of x: 10

这里,x 的值被修改了,因为参数是按引用传递的。


4. 默认参数 (Default Arguments)

C++ 允许函数参数提供默认值,如果调用函数时没有提供某个参数的值,函数会使用默认值。

语法

return_type function_name(parameter1 = default_value1, parameter2 = default_value2, ...) {
    // 函数体
}

示例:使用默认参数

#include <iostream>
using namespace std;

void printMessage(string message = "Hello, world!") {
    cout << message << endl;
}

int main() {
    printMessage();  // 使用默认参数
    printMessage("Custom message");  // 使用自定义参数
    return 0;
}

输出:

Hello, world!
Custom message

5. 函数重载 (Function Overloading)

C++ 支持函数重载,即多个函数具有相同的名称,但参数的数量或类型不同。编译器根据调用时传递的参数类型来选择正确的函数。

示例:函数重载

#include <iostream>
using namespace std;

int add(int a, int b) {
    return a + b;
}

double add(double a, double b) {
    return a + b;
}

int main() {
    cout << "Integer sum: " << add(5, 3) << endl;
    cout << "Double sum: " << add(2.5, 3.7) << endl;
    return 0;
}

输出:

Integer sum: 8
Double sum: 6.2

6. 匿名函数 (Lambda Functions)

C++11 引入了匿名函数(Lambda 函数)。Lambda 函数是定义在函数内部的没有名字的函数。它允许直接在代码中定义一个内联的函数。

语法

[捕获列表](参数列表) -> 返回类型 {
    // 函数体
}

示例:Lambda 函数

#include <iostream>
using namespace std;

int main() {
    auto add = [](int a, int b) -> int {
        return a + b;
    };
    cout << "Sum: " << add(5, 3) << endl;
    return 0;
}

输出:

Sum: 8

总结

C++ 中的函数用于封装可重复执行的代码块,具有以下特性:

  • 函数定义:包括返回类型、函数名、参数列表和函数体。
  • 返回值:函数可以返回某个值,或没有返回值(void)。
  • 参数传递:可以使用值传递或引用传递。
  • 默认参数:允许在函数参数中设置默认值。
  • 函数重载:允许多个函数具有相同的名称,但参数列表不同。
  • Lambda 函数:匿名函数用于在函数内部定义临时的小功能块。

理解和运用好这些特性,可以大大提高 C++ 编程的灵活性和可维护性。

发表回复 0

Your email address will not be published. Required fields are marked *