引用是C++的新增内容,在实际开发中会经常用到,引用可以直接看作是数据的一个别名,通过这个别名和原来的名字都能够找到这份数据。
引用类似于Windows中的快捷方式,一个可执行程序可以有很多个快捷方式,通过这些快捷方式和可执行程序本身都能够运行程序
医用还类似于人的绰号,使用绰号和本名都能表示一个人。
引用比指针更加方便和易用,有时候甚至是不可或缺的。
其实引用只是对指针进行了简单的封装,它的底层依然是通过指针来实现的
为什么使用引用
参数的传递本质上上一次赋值的过程,赋值就是对内存进行拷贝。
对于像char、bool、、int、float等基本类型的数据,他们占用的内存只有几个字节,对他们进行内存拷贝非常快。而数组、结构体、对象是是一系列数据的集合,数据的数量没有限制,
可能很少也可能很多,对他们进行频繁的内存拷贝可能会消耗很多时间,拖慢程序的执行效率。
引用的语法格式:
与指针的用法相似,只是用& 代替了*
type 是被引用的数据类型,name是引用的名称, data是被引用的数据。引用必须在定义的同时初始化,并且以后也要从一而终,不能再引用其他数据,这点类似于常量。
引用在定义时需要加 & ,在使用时不能加&,使用时加 & 表示取地址
type &name = data;
Color Red(255, 0, 0); Color &R = Red; R.display(); Red.display();
用&R表示Red, R.diasplay() 和 Red.display()执行的结果是相同的。
引用可以函数的形参
#include <iostream> using namespace std; void swap3(int &r1, int &r2); int main() { int num1, num2; cout << "Input two integers: "; cin >> num1 >> num2; swap3(num1, num2); cout << num1 << " " << num2 << endl; return 0; } //按引用传参 void swap3(int &r1, int &r2) { int temp = r1; r1 = r2; r2 = temp; }
引用作为函数的返回值
#include <iostream> using namespace std; int &plus10(int &r) { r += 10; return r; } int main() { int num1 = 10; int num2 = plus10(num1); cout << num1 << " " << num2 << endl; return 0; }
运行结果 20 20
引用不能绑定到临时数据,但用const 关键字对引用加以限定后,引用可以绑定到临时数据
引用类型的函数形参请尽可能使用const