引用是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

 

posted on 2019-09-29 16:23  信义勤爱  阅读(240)  评论(0编辑  收藏  举报