• C++引用变量学习


    版权所有,转载请注明来源

    (1)reference variable(rv) 主要用处是作为方程的形式参数,使用rv 可以直接对原数据进行操作而不是该数据的拷贝,节省了时间和空间,尤其是对于结构体以及类的一个对象来说,对于普通类型数据来说,传值调用是不错的选择。

    (2)使用 type & name 的形式定义一个引用变量,参考《c++ premier plus》上的例子,

    int rats;

    int & rodents = rats;   (int & means “reference to an int variable”)

    定义了一个rodents,它是指向rat的引用变量,初始化以后,rats and rodents有相同的值,指向相同的地方,可以互换使用,通俗的说,就是“一个东西,两种叫法”。

    (3)rv必须在声明的时候初始化,初始化以后,指向的地方不再变化,相当于const 类型的指针,后续的赋值只能改变其值,不能改变地址。譬如

    int & rodents = rats;  相当于

    int * const pr = &rats;

    (4)当函数(function)的形参(formal argument)为指向const 类型的rv,编译器会在以下两种情况下产生临时变量

    • 当实参类型正确,但不是“左值(lvalue)”
    • 当实参类型不正确,但是可以转换为正确类型

      (5)C++ 11 标准引入了新的称为“右值引用(rvalue reference)”的语法,因此原来的引用现在称为“左值引用(lvalue reference)”

      (6)函数返回引用与返回值这两种方式,有什么区别?

      对于“返回值”这种返回方式,首先return语句后的对象,会被拷贝到一个临时内存中,然后改临时内存中的数据在被拷贝到调用函数的相应对象中,但是如果是“返回引用”,return语句后的对象直接拷贝到调用函数相应的对象中,更快。

      (7)const 类型的引用返回,有什么用?

      使用const 类型的引用返回,可以避免对返回值进行修改

      (8)不要返回一个存储类型只是local的变量的引用,因为当程序执行完该变量所在区域,该变量将不再存在,因此这是错误的设计例子

    int & test (int & x)

    {

         int temp;

         temp = x;

         return temp;

    }

    上述例子中,temp在test函数执行完毕后,将不再存在,因此返回temp的引用,程序将会出错奔溃

  • 相关阅读:
    计算某一日期是在一年中第几周
    动态生成web表-asp.net table
    sql server 小技巧(7) 导出完整sql server 数据库成一个sql文件,包含表结构及数据
    循环取月的三位英语名 Jan Feb
    Python面向对象编程
    算法
    UDP Sockets in C#
    C++ 11
    GNU Make
    C++ 11
  • 原文地址:https://www.cnblogs.com/csucat/p/4574947.html
Copyright © 2020-2023  润新知