C++引用与内联函数

人走茶凉 提交于 2021-02-03 13:33:25

1.引用的概念

    引用即相当于给变量取了一个别名,例如int a=10;int& a1=a;此时a1与a都代表同一块内存空间,可以通过a1来修改a中的值。

2.引用的特性

    1.引用在定义时必须初始化。

    2. 引用一旦引用一个实体,再不能引用其他实体。

    3. 一个变量可以有多个引用。

    4.在定义时必须保持类型一致。

    5.无法定义数组的引用。(感觉上是的)

3.const引用

double d = 12.34;const int& rd = d;这段语句看上去是错误的,因为类型不仅不一致,d是变量,rd是常量类型,更应该编译错误。但是结果是可以编译成功,原因在于rd再被赋值的时候是临时变量,具有常量属性,所以可以成功,所以如果把const去掉就无法编译成功。

4.引用作函数参数与返回值

    1.引用作函数形参与指针作形参很像,引用作参数只是将形参作为接收到的实参的别名,因此不会对变量空间中的内容进行拷贝。传参时实参必须是变量名。

    2.作返回值时,返回值的生命周期必须大于调用的函数的生命周期。返回引用的效率比返回值的效率高。

5.引用的底层实现

引用的底层实现就是指针。

6.引用与指针的区别

    1.引用在定义时必须初始化,指针可以不初始化。

    2.只有一级引用,没有多级引用,指针可以有多级。

    3.引用自加是内容自加,指针自加是地址偏移量。

    4.sizeof量的是引用的内容大小,量指针则是指针类型的大小。

    5.没有空引用,但有空指针。

    6.引用更加安全。

    7.指针需要解引用。

    8.引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何一个同类型实体。

 

内联函数:

关键字:inline,在函数前面加inline,可以将函数定义为内联函数,内联函数即在编译阶段将函数直接展开,可以减少函数栈帧,提高效率。但是如果函数较复杂,包含循环递归等,编译器则不会展开,因为inline相当于对编译器的“建议”,而不是命令,复杂的函数即便有inline修饰,编译器也不会将其展开,否则代码量会过大,例如递归。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!