C++ 函数
目录
- 函数默认参数
- 引用传参
- 函数重载
- 数量不同
- 类型不同
- 内联函数
函数默认参数
#include<iostream>using std::cout;
using std::endl;int power(int n, int x=2); // x=2 是默认参数int main() {cout << power(5) << endl; // 没有传 x 的值,用默认值 x=2cout << power(4, 3) << endl; // 传了 x 的值,用传的 x 的值return 0;
}int power(int n, int x) {return n * x;
}
注意:默认参数只能放在形参列表的结尾,避免歧义。
引用传参
引用传参:& 紧跟在数据类型后面,相当于直接拿原件进行操作。
void swap(int& a, int& b) {int temp = a;a = b;b = temp; // 交换值
}int main() {int m = 1, n = 99;swap(m, n);cout << m << '\t' << n; // 输出 99 1return 0;
}
函数重载
数量不同
int add(int a, int b) {return a + b;
}int add(int a, int b, int c) {return a + b + c;
}cout << add(1, 2) << endl;
cout << add(1, 2, 3) << endl;
编译器会根据参数数量选择对应的函数。
类型不同
string myAdd(int a, int b) {return to_string(a + b);
}string myAdd(int a, string s) {return to_string(a) + s;
}
注意:有可能因为数量和类型相同而匹配错误,应避免歧义。
内联函数
内联函数:如果函数功能简单且反复调用,使用 inline
关键字减少调用开销。这是一个给编译器的建议,不是一定会被内联。
inline int getMax(int a, int b, int c) {return a > b ? (a > c ? a : c) : (b > c ? b : c);
}int main() {cout << getMax(1, 2, 3) << endl;cout << getMax(4, 2, 3) << endl;cout << getMax(1, 5, 3) << endl;// 如果编译器接受建议,这些调用会在编译的时候直接展开成函数内容return 0;
}