行业知识
初谈C++:引用
2026-10-30 22:22:57
来源:互联网转载
文章目录
- 前言
- 概述
- 引用特性
- 应用场景
- 做参数
- 做返回值
- 传值、传引用效率比较
- 引���和指针的区别
前言
在学习C语言的时候会遇到指针,会有一级指针、二级指针…很容易让人头昏脑胀。在C++里面,引入了引用的概念,会减少对指针的使用。引用相当于给一个变量起了一个别名,比如“高总”指的是小编。
概述
引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。
类型& 引用变量名(对象名) = 引用实体
#includeusing namespace std;int main(){int a = 10;int& b = a;int& c = a;return 0;}调试过程中,发现引用变量的地址和引用实体的地址是相同的,也就是说引用实际上就是给一个变量起了一个别名。
注意:引用类型必须和引用实体是同种类型的
引用和C语言中只针的操作其实差不多,我们在反汇编语言中可以看到:
引用特性
1. 引用在定义时必须初始化
int main(){int a = 10;int& ra; //错误语法return 0;}在这段代码中,int& ra没有初始化,编译器会报错
正确代码:
int main(){int a = 10;int& ra = a;return 0;}- 一个变量可以有多个引用
int main(){int a = 10;int& ra = a;int& rra = a;return 0;}上述代码中,ra、rra都是对变量a的引用。这是没有问题的,比如小编有不止一个外号。
- 引用一旦引用一个实体,再不能引用其他实体
int main(){int a = 10;int temp = 20;int& ra = a;ra = temp;cout int tmp = a;a = b;b = tmp;}int main(){int x = 0, y = 1;Swap(x, y);cout int sum = a + b;return sum;}int main(){int x = 4;int y = 3;int ans = Add(x, y);cout int c = a + b;return c;}int main(){int& ret = Add(1, 2);Add(3, 4);cout int a[10000]; };void TestFunc1(A a) {}void TestFunc2(A& a) {}void TestRefAndValue(){A a;// 以值作为函数参数size_t begin1 = clock();for (size_t i = 0; i