目录
引用
引用的基本知识
使用const修饰引用
引用作为参数与返回值
引用与指针的区别
内联函数
内联函数的定义
引用
引用的基本知识
C++中引用的功能和指针几乎相同,但有指针不具有的优点
引用相当于是对一个变量起别名(小名) 别名与函数本来的名字等价
//引用的定义
//引用符号:&
//与取地址公用一个符号
int main()
{
int a = 0;
int& b = a; //给变量a起一个别名叫做b a与b是同一个变量
return 0;
}
引用声明的时候必须初始化.
一个变量可以有很多的引用.
引用可以引用 引用, 就是说可以给别名再起别名
引用一但初始化就不能更改
使用const修饰引用
const修饰变量 可以变为常变量, 引用也是类似的
const修饰引用可以使引用具有常性
引用只能权限小于等于原本的变量
int main()
{
const int a = 10;
const int& b = 10;
double d = 3.14;
const int& i = d //double转换成int使先转换成临时变量 临时变量具有常性 所以可以赋值给引用
int c = 20;
const int& = c; //可以
return 0;
}
引用作为参数与返回值
可以代替指针使用,且比指针更清晰
void swap(int& a, int& b)
{
int tmp = a;
a = b;
b = tmp;
}
引用作为返回值时返回的是局部变量的地址,函数结束时栈帧释放 这时引用为野指针,
正确的方法是使用static修饰 使变量不被销毁
int& count()
{
static int num = 0;
//int num = 0; 错误
++num;
return num;
}
引用与指针的区别
在语法上,指针有独立开辟的空间, 引用没有开辟空间
在底层原理上 二者完全相同
内联函数
内联函数与C语言的宏定义一样
调用时直接展开没有函数的压栈
函数短小简单的情况下使用内联函数
太长或递归循环不适用
内联函数只是对编译器的建议, 编译时是否展开由编译器决定
内联函数声明和定义不能分开,会发生链接错误,因为函数没有地址



