zoukankan      html  css  js  c++  java
  • 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中有提过。

  • 相关阅读:
    RocketMQ源码分析:(二)消息发送的三种方式
    LTS本地搭建详述
    Mac端解决(含修改8.0.13版的密码):Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
    flink入门:01 构建简单运行程序
    rocketmq控制台搭建(rocketmq-console)
    在consul上注册web服务
    将filenames里的每个字符串输出到out文件对象中注意行首的缩进
    spidermark sensepostdata ntp_monlist.py
    HTTP Error 403没有了,但是中文全都是乱码。又是怎么回事?
    original.txt和提交的页面输出的文字的混合文件
  • 原文地址:https://www.cnblogs.com/metalsteel/p/6246920.html
Copyright © 2011-2022 走看看