C++入门之引用与内联函数

一、引用

1、初步理解

引用在语法上的理解就是起别名,用法就是在类型后面加&,例子:int a = 1; int& b = a;

上例所示,执行后,b就是a的别名,它们代表同一块空间,a的改变会影响b,b的改变也会影响a。

cpp 复制代码
#include<iostream>
using namespace std;
int main()
{
    int a = 1;
    int& b = a;
    a = 3;
    printf("a = %d, b = %d\n", a, b);
    return 0;
}

运行结果如下:

2、使用细节

1、引用必须得初始化

2、一旦初始化,引用对象不可改变

3、一个引用只能有一个对象,但一个对象能有多个引用。

1、未初始化的引用会报错

2、一旦初始化,引用对象不可改变

执行结果:

3、一个对象可以有多个引用 (等于可以起多个别名)

执行结果:

3、做参数和返回值

引用做参数的价值十分大。在C语言,我们在函数里面想要修改参数必须使用指针,加大了编程难度,而C++里面我们就可以传引用(引用的底层也是指针,但从语法上来说,是参数的别名),在函数里直接修改参数,它在外面也会跟着改变,更加简单。

同时,在参数为string或vector、map等占空间比较大的类型时,引用做参数比不带引用更高效,因为拷贝会消耗内存,而我们传引用,因为底层是指针,只占4或8字节,所以更快。

执行结果:

引用做返回值可以让我们在调用函数后对返回值直接做调整。

但要注意不能返回函数里面的定义的变量的引用,因为函数体里面的变量在函数调用完成后是要销毁的,如果返回了临时变量的引用,就类似野指针一样,有风险。

执行结果:

2、内联函数

在C语言中我们将一些频繁调用的小函数写为宏函数,提高代码的执行效率。但宏函数有着许多缺点:不检查数据类型、无法调试、写的难度略高,易写错。C++就出现了内联函数来替代宏函数,内联函数就是在函数名前面加 inline 关键字,它会在调用的地方展开,减少函数调用。

内联函数适用于频繁调用的小函数(10行左右),如:swap() ,max()等

内联函数只是建议编译器展开,并不代表一定会展开,若函数太长或函数为递归函数,编译器觉得不应该展开,那将不会展开。

如果声明和定义分离的内联函数,声明和定义都要写在头文件中,并加上inline关键字,因为inline只在定义起作用,内联函数在调用地方展开,是没有地址的。

感谢观看!!!

相关推荐
地平线开发者4 小时前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶
董董灿是个攻城狮5 小时前
大模型连载2:初步认识 tokenizer 的过程
算法
地平线开发者5 小时前
地平线 VP 接口工程实践(一):hbVPRoiResize 接口功能、使用约束与典型问题总结
算法·自动驾驶
罗西的思考5 小时前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
HXhlx9 小时前
CART决策树基本原理
算法·机器学习
Wect9 小时前
LeetCode 210. 课程表 II 题解:Kahn算法+DFS 双解法精讲
前端·算法·typescript
颜酱10 小时前
单调队列:滑动窗口极值问题的最优解(通用模板版)
javascript·后端·算法
肆忆_12 小时前
# 用 5 个问题学懂 C++ 虚函数(入门级)
c++
不想写代码的星星16 小时前
虚函数表:C++ 多态背后的那个男人
c++
Gorway16 小时前
解析残差网络 (ResNet)
算法