温馨提醒:本篇文章起,文章内容排版将更新,层层深入
基础知识
回顾
引用的语法格式:类型& 引⽤别名 = 引⽤对象;
引用特性
引用的使用
1. 引⽤传参和引⽤做返回值中减少拷⻉提⾼效率和改变引⽤对象时同时改变被引⽤对象
2. 引⽤传参跟指针传参功能类似,引⽤传参相对更⽅便⼀些。
3. 引⽤和指针在实践中相辅相成,功能有重叠性,但是各有特点,互相不可替代。
const引用
指针与引用的关系
1. 语法概念上:引⽤不开空间,指针是存储⼀个变量地址,要开空间。
2. 引⽤在定义时必须初始化,指针可以初始化,也可以不初始化
3. 引⽤在初始化时引⽤⼀个对象后,就不能再引⽤其他对象,指针可以改变指向对象
4. 引⽤可以直接访问指向对象,指针需要解引⽤才是访问指向对象。
实操进阶
引用的特性
特性 1.引用初始化
特性 2.一个变量多个引用
引用的使用
1.引⽤传参和引⽤做返回值
const引用
权限问题:放大
如上图可知,权限不能放大
权限缩小
由上图可知,权限可以缩小
一些其他使用的简单介绍
引用类型转换:
double d = 3.14;
const int& rd = d;
引用传参
void func(const int& val)
{
语句;
}
内联函数
1. ⽤inline修饰的函数叫做内联函数,编译时C++编译器会在调⽤的地⽅展开内联函数,这样调⽤内联函数就需要建⽴栈帧了,就可以提⾼效率。
2. inline适⽤于频繁调⽤的短⼩函数,对于递归函数,代码相对多⼀些的函数,加上inline也会被编译器忽略。
3. 替代C的宏函数。
4. inline不建议声明和定义分离到两个⽂件,分离会导致链接错误。因为inline被展开,就没有函数地址,链接时会出现报错。
5. vs编译器 debug版本下⾯默认是不展开inline的,这样⽅便调试,debug版本想展开需要设置⼀下以下两个地⽅。
nullptr
C++11中引⼊nullptr,nullptr是⼀个特殊的关键字,nullptr是⼀种特殊类型的字⾯量,它可以转换
成任意其他类型的指针类型。使⽤nullptr定义空指针可以避免类型转换的问题,因为nullptr只能被
隐式地转换为指针类型,⽽不能被转换为整数类型。