C++中的引用

一,C++中引用的基础知识

1.引用的基本概念

  1.所谓的引用其实就是对变量起“别名”。引用和变量对应得是相同的内存,修改引用的值,变量的值也会改变,和指针类似。

  2.引用在定义的时候必须要初始化,初始化后就用引用的对象绑定在一起了。

  3.引用本身不是对象,不能定义引用的引用。

2.引用的意义

  1.引用作为其他变量的别名存在,因此在一些场合可以用来替代指针。

  2.引用相对于指针来说具有更好的可读性和实用性。

3.引用的定义方式

  数据类型 &引用名称 = 变量;

# include<iostream>
using namespace std;

int main()
{
    // 定义变量a
    int a = 10;
    // 定义引用b
    int &b = a;

    return 0;
}

二,引用的本质

1.引用的本质剖析

# include<iostream>
using namespace std;

int main()
{
    // 定义变量a
    int a = 10;
    // 定义引用b
    int &b = a;
    // 引用一旦初始化,就不再改变本身所绑定的对象,因此引用很想一个const修饰的常量
    cout << "&a = " << &a << endl;
    cout << "&b = " << &b << endl;
    // 通过打印地址,发现变量和引用的地址相同,因此引用本质是一个指针

    return 0;
}

2.引用的本质分析

  1.引用的初始化之后不允许被修改,因此引用是一个常量。

  2.引用的地址和变量本身的地址一样。因此引用是一个指针。

  3.引用的本质是一个常量指针,只是C++编译器帮助我们进行了自动取地址操作和解引用操作。

  4.上述的案例的本质:int &b = a; 相当于 int * const b = &a;

三,引用的重点

1.引用作函数参数

  引用作函数参数可以用来替代指针,在函数内部操作引用,就可以修改函数外部变量的值。

2.引用作函数返回值(此处涉及类的拷贝构造函数)

  引用作函数返回值,如果返回的是栈变量,则实际返回的是该变量的一份拷贝。

3.指针引用

  引用是指针类型的,例如:Teacher teacher = {"王刚",21};Teacher * &t = &teacher;

4.常引用

  使用变量初始化引用,使引用具有只读属性,保护了引用所指向的对象,防止被函数内部修改。

  使用字面量初始化引用,例如:const int &a = 10;是可以的,这里会在编译期间对字面量常量分配内存空间,在上一节的const中有提过。

原文地址:https://www.cnblogs.com/metalsteel/p/6246920.html