代码改变世界

[C++]引用浅析

2014-01-06 19:15  hellenism  阅读(220)  评论(0编辑  收藏  举报

Date:
2013-12-22


Summary:

引用数据类型的一些概念记录
(沟通中提到引用必须结合语境才能知道说的是引用变量还是“引用”这一行为,再次提到引用指的一般是引用变量)


Contents:

1.什么是引用?
C++中提到引用,一般指的是C++中的变量的一种,它是一种数据类型,一种复合的数据类型.
C++ Primer plus中提到,引用是已定义的变量的别名。它的主要用途是作为函数的形参(之后会记录函数形参的有关知识,这里就只记录引用了,目的还是在于关注点单一)

 

2.创建引用变量
a).通过类型关键字和&操作符声明引用变量
b).引用变量必须在声明时初始化

int num = 10;
int& refNum = num; (int&描述了变量refNum是一个引用int类型的引用变量)

 

3.引用的原理
定义引用时,程序把引用和它初始值绑定在一起,而不将初始值拷贝给引用。一旦初始化完成,引用将和它的初始值对象一直绑定在一起,无法令引用重新绑定到另外的一个对象

定义了一个引用之后,对此引用做的一切操作,其实都是在与之绑定的对象上进行的。

 

Notes:

Nothing

 

EX:

    //
    //  main.cpp
    //  Cpp_All_Test
    //
    //  Created by StephenLee on 1/1/14.
    //  Copyright (c) 2014 StephenLee. All rights reserved.
    //

    int num = 10;
    
    // a).
    // 声明一个引用变量refNum,并且在声明时候初始化,否则编译报错
    int& refNum = num;
    
    //可见引用就是其绑定对象的一个别名而已,值相同,地址也相同
    cout << "refNum = " << refNum << " refNum变量 地址:" << &refNum << endl;
    cout << "num = " << num << " num变量 地址:" << &num << endl;
    
    // b).
    // 对引用变量进行的所有操作,其实就是对引用变量绑定的数值进行操作
    // 运算操作
    refNum += 1;
    cout << "refNum = " << refNum << " refNum变量 地址:" << &refNum << endl;
    cout << "num = " << num << " num变量 地址:" << &num << endl;
    // 赋值操作
    int num2 = 20;
    refNum = num2; //注意此处。 看上去好像是修改引用变量,让其引用到其他对象上。其实不是,引用一旦初始化绑定了某个对象
    //就无法再绑定到其他对象上,这里其实是等价于: num = num2; 然后refNum依然绑定的是num而非num2
    cout << "refNum = " << refNum << " refNum变量 地址:" << &refNum << endl;
    cout << "num = " << num << " num变量 地址:" << &num << endl;

  

 

THE END