跳至主要內容

08.函数

约 433 字大约 1 分钟

函数 是一组一起执行一个任务的语句

定义函数

return_type function_name( parameter list )
{
   body of the function
}

调用函数

function_name(parameter list);

函数参数

  1. 传值调用 该方法把参数的实际值赋值给函数的形式参数。在这种情况下,修改函数内的形式参数对实际参数没有影响。

  2. 指针调用 该方法把参数的地址赋值给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。

  3. 引用调用 该方法把参数的引用赋值给形式参数。在函数内,该引用用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。

可变参数

示例

int add(int a, int b);

int main() {
    printf("数据: %d \n", add(1,3));
    return 0;
}

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

C++ 特有的函数

仿函数(函数对象)

C++ 中重载 operator() 的类或结构体,使其对象可以像函数一样调用。

#include <iostream>
using namespace std;

struct Add {
    int operator()(int a, int b) {  // 重载 () 运算符
        return a + b;
    }
};

int main() {
    Add add;  // 定义仿函数对象
    cout << "3 + 5 = " << add(3, 5) << endl;  // 使用仿函数
    return 0;
}

Lambda 替代仿函数

sort(vec.begin(), vec.end(), [](int a, int b) { return a > b; });

std::function 替代仿函数

#include <iostream>
#include <functional>
using namespace std;

struct Multiply {
    int operator()(int a, int b) {
        return a * b;
    }
};

int main() {
    function<int(int, int)> func = Multiply();
    cout << func(3, 4) << endl;  // 12
}

虚函数 和 纯虚函数

class Shape {
public:
    virtual void draw() = 0;  // 纯虚函数
    virtual void show() { cout << "Shape::show()" << endl; }  // 虚函数
};