zoukankan      html  css  js  c++  java
  • C++引用

    引用

    引用就是为一个对象起另外一个名字
    
    • 定义引用:在标识符前加上&,就表示定义了该变量是一个引用,例如:

      int nTest = 0;
      int & nrTest = nTest;
      

      注意:

      • 定义引用时要进行初始化,否则编译时会报错
      • 对一个变量的引用赋值,等同于对这个变量赋值
      • 虽然有多级指针,但是没有多级引用,无法定义引用的引用

    引用的本质

    测试代码如下:

     int main()
     {
       int nNum = 0;
       int * pNum = &nNum;
       int & rNum = nNum;
       *pNum = 4;
       rNum = 4;
       return 0;
     }
    

    对应的汇编代码如下:

    int nNum = 0;
    002713D8  mov         dword ptr [nNum],0  
      int * pNum = &nNum;
    002713DF  lea         eax,[nNum]  
    002713E2  mov         dword ptr [pNum],eax  
      int & rNum = nNum;
    002713E5  lea         eax,[nNum]  
    002713E8  mov         dword ptr [rNum],eax  
      *pNum = 4;
    002713EB  mov         eax,dword ptr [pNum]  
    002713EE  mov         dword ptr [eax],4  
      rNum = 4;
    002713F4  mov         eax,dword ptr [rNum]  
    002713F7  mov         dword ptr [eax],4  
      return 0;
    002713FD  xor         eax,eax  
    

    可以看出使用指针对nNum进行赋值,和使用引用进行赋值,两者的汇编代码是相同的,都是
    往nNum所在的内存地址出进行赋值操作,由此可以看出引用的本质就是指针,只不过编译器
    在生成代码的时候做了一些工作,使得操作引用等同操作原对象一样

    注意:对一个引用取地址即可得到所引用变量所在的内存地址

  • 相关阅读:
    WPF常用TriggerAction用法 (一)
    一个WPF只能输入数字的行为。
    自定义panel实现,并实现item更改和移除动画。
    MVVM模式下弹出窗体
    ZAM 3D 制作简单的3D字幕 流程(二)
    ZAM 3D 制作简单的3D字幕 流程(一)
    ZAM 3D 制作3D动画字幕 用于Xaml导出
    Metro Win8风格的按钮(Filp翻转)
    WPF自动隐藏的消息框(鼠标放上去将一直显示,移开动画继续),提供normal和error两种边框。
    可分组的选择框控件(MVVM下)(Toggle样式 仿造单选框RadioButton,复选框CheckBox功能)
  • 原文地址:https://www.cnblogs.com/UnknowCodeMaker/p/11119471.html
Copyright © 2011-2022 走看看