函数与重载

C++ 教程 · 第 4 章 · 5 次浏览

C++ 的函数比 C 多了几个特性:函数重载、默认参数、引用传递,还有 lambda 表达式。

函数重载

同名函数,参数列表不同(数量或类型),编译器按调用参数自动选版本。

默认参数

参数可以给默认值:int add(int a, int b = 10),调用时可以少传。

引用 &

void swap(int &a, int &b) 引用传参,直接操作原变量,比指针更安全直观。

lambda

匿名函数:[捕获](参数) -> 返回类型 { 函数体 },STL 算法里用得非常多。

代码示例

#include <iostream>
using namespace std;

// 函数重载
int max(int a, int b) { return a > b ? a : b; }
double max(double a, double b) { return a > b ? a : b; }

// 引用传参
void swap(int &a, int &b) {
    int t = a; a = b; b = t;
}

// 默认参数
int add(int a, int b = 10) { return a + b; }

int main() {
    cout << max(3, 5) << endl;        // 调 int 版
    cout << max(3.5, 2.1) << endl;    // 调 double 版

    int x = 1, y = 2;
    swap(x, y);
    cout << "x=" << x << " y=" << y << endl;

    cout << add(5) << endl;           // 15(默认参数)

    // lambda
    auto square = [](int n) { return n * n; };
    cout << square(7) << endl;        // 49

    return 0;
}