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=2
cout << 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 1
return 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;
}