目录
一、缺省参数
1.1缺省参数的概念
概念:缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。
#include <iostream>
using std::cout;
using std::endl;
void TestFunc(int a = 0)
{
cout << a << endl;
}
int main()
{
TestFunc();//没有传参时,使用参数默认值
TestFunc(10);//传参时,使用指定的实参
return 0;
}
1.2缺省参数的分类
(1)全缺省参数
(2)半缺省参数
注意:
1.半缺省参数必须从右到左依次来给出,不能间隔给。
2.缺省参数不能在函数声明和定义中同时出现。
3.缺省参数必须是常量或者全局变量。
4.C语言不支持。
二、函数重载
2.1函数重载概念
#include <iostream>
using std::cout;
using std::endl;
int Add(int left, int right)
{
return left + right;
}
double Add(double left, double right)
{
return left + right;
}
long Add(long left, long right)
{
return left + right;
}
int main()
{
Add(10, 20);
Add(10.0, 20.0);
Add(10L, 20L);
return 0;
}
注意:函数重载只与参数类型和参数个数有关。
三、 引用
3.1引用概念
类型& 引用变量名(对象名) = 引用实体;
#include <iostream>
using std::cout;
using std::endl;
int main()
{
int a = 10;
int& b = a;//定义引用类型
cout << &a << endl;//打印a的地址
cout << &b << endl;//打印b的地址
return 0;
}
注意:引用类型必须和引用实体是同种类型的。
3.2引用特性
- 引用在定义时必须初始化。
- 一个变量可以有多个引用。
- 引用一旦引用一个实体,再不能引用其他实体
3.3 常引用
3.4 使用场景
1.做参数
#include <iostream>
using std::cout;
using std::endl;
void Swap(int& x, int& y)
{
int tmp = x;
x = y;
y = tmp;
}
int main()
{
int num1 = 10;
int num2 = 20;
Swap(num1,num2);
cout << num1 << endl;
cout << num2 << endl;
return 0;
}
2.做返回值
#include <iostream>
using std::cout;
using std::endl;
int& Add(int a, int b)
{
static int c = a + b;
return c;
}
int main()
{
int& ret = Add(1, 2);
cout << "Add(1, 2) is :" << ret << endl;
return 0;
}
注意:如果函数返回时,出了函数作用域,如果返回对象还未还给系统,则可以使用引用返回,如果已经还给系统了,则必须使用传值返回。
3.5 引用和指针的区别
在语法概念上引用就是一个别名,没有独立空间,和其引用实体共用同一块空间。
四、 内联函数
4.1 概念
4.2 特性
- inline是一种以空间换时间的做法,省去调用函数额开销。所以代码很长或者有循环/递归的函数不适宜使用作为内联函数。
- inline对于编译器而言只是一个建议,编译器会自动优化,如果定义为inline的函数体内有循环/递归等等,编译器优化时会忽略掉内联。
- inline不建议声明和定义分离,分离会导致链接错误。因为inline被展开,就没有函数地址了,链接就会找不到。
总结
本文简单介绍了缺省参数、函数重载、引用和内联函数,有错误请及时指正哦!