08.函数
约 433 字大约 1 分钟
函数 是一组一起执行一个任务的语句
定义函数
return_type function_name( parameter list )
{
body of the function
}
调用函数
function_name(parameter list);
函数参数
- 传值调用 该方法把参数的实际值赋值给函数的形式参数。在这种情况下,修改函数内的形式参数对实际参数没有影响。
- 指针调用 该方法把参数的地址赋值给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。
- 引用调用 该方法把参数的引用赋值给形式参数。在函数内,该引用用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。
可变参数
示例
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; } // 虚函数
};