Day02学习目录
第7章 函数
7.2 使用函数处理不同类型的数据
7.2.1 函数重载
函数重载:函数名称和返回类型相同,但参数不同的函数。
下面的Area()函数,重载之后可以分别计算圆和圆柱的面积。
// for circle
double Area(double radius)
{
return Pi * radius * radius;
}
// overloaded for cylinder
double Area(double radius, double height)
{
// reuse the area of circle
return 2 * Area (radius) + 2 * Pi * radius * height;
}
7.2.2 将数组传递给函数
void DisplayArray(int numbers[], int length)
{
for (int index = 0; index < length; ++index)
cout << numbers[index] << " ";
cout << endl;
}
7.2.3 按引用传递参数
const double Pi = 3.1416;
void Area(double radius, double& result) {
result = Pi * radius * radius;
}
int main() {
cout << " Enter radius :";
double radius = 0;
cin >> radius;
double areaFetched = 0;
Area(radius, areaFetched);
cout << "The area is :" << areaFetched << endl;
return 0;
}
7.3.1 内联函数
在函数名称前加入inline关键字,编译器会将函数的内容直接放到调用它的地方,避免栈操作,提高代码的执行速度。
inline long DoubleNum(int inputNum) {
return inputNum * 2;
}
int main() {
int inputNum = 0;
cin >> inputNum;
cout << "Double is :" << DoubleNum(inputNum) << endl;
return 0;
}
7.3.2 自动推断返回类型
使用auto让编译器根据返回值推断函数的返回类型,如果包含多条return语句,必须确保他们推断出的返回类型都相同。
auto Area(double radius) {
return Pi * radius * radius;
}
7.3.3 lambda函数
lambda函数的语法如下:
[ optional parameters ] ( parameter list ) { statements; }
下面是示例代码:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void DisplayNums(vector<int>& dynArray) {
for_each(dynArray.begin(), dynArray.end(), [](int Element) {cout << Element << " "; });
cout << endl;
}
int main() {
vector<int> myNums;
myNums.push_back(501);
myNums.push_back(-1);
myNums.push_back(25);
myNums.push_back(5);
myNums.push_back(-35);
DisplayNums(myNums);
sort(myNums.begin(), myNums.end(), [](int a, int b) {return b > a; });
DisplayNums(myNums);
return 0;
}