翻看了几天李普曼大师的书后,不得不说,大师就是大师,对于细节的理解及解释都非常人可比。看完有关引用的一小部分知识,从前对引用的理解盲区渐渐被填补,现在本文中对一些简单的引用知识进行梳理记录。下面转入正题:

    引用,即是为一个对象起了另一个名字,引用类型则是引用另一种类型。从定义,我们就可以了解到某些性质:1.既然是为对象起了另一个名字,那引用从某个角度上来看,就能够代表其所指的那个对象,如此,我们对引用执行的它能够执行的合法操作,都将反映到其所指对象之上; 2.引用类型是用来引用另一种类型,没有指向引用的引用。

    使用引用,我们当然需要先定义它,定义方法很简单。首先,我们需要先明确我们是要定义指向什么类型对象的引用(这和定义指针大同小异,都需要根据指向的对象类型判断),比如:我们要定义一个指向int型对象的引用,则要这样做:

    int value;    int &refValue = value;

    C++以'&'标识一个引用,在上述表达式中,我们还可以看到初始化的痕迹。必须提一点,引用定义时必须初始化,这点由定义我们就能很好理解,既然是为对象起别名,那我们当然需要指明这是谁的别名,而引用初始化就是这样的一个过程。

    定义引用之后,我们就可以对引用进行操作了。上文提过,对引用进行的一些合法操作,将反映到其所指对象之上,通过调试,我们可以知道:

    value = 10;

    refValue = 10;

上面两个表达式的效果将是相同的。

    我们还可以对引用进行取地址、sizeof操作等,同样,所得结果与对其所指对象进行取地址、sizeof操作是等同的。有趣的是,对引用取地址,得到的是其所指对象的地址,那我们该如何获取引用的地址呢?或者说引用没有地址?让我们回归引用的定义,引用是为一个对象起了个别名,这里可以做个比喻,比如有个人叫李明,他的家里人都叫他小明,所以李明和小明都应该是指的同一个人。由此,如果我们为一个对象起别名,而这个别名是一个独立的实体,那么这还算是别名么?从李普曼大师的书中我们也可以看到,引用确实不是一个实体的对象,所以上文中提到的,不能有指向引用的引用,这里就得到了证明,引用不是一个实体对象,那我们怎么指向它呢?

    简单的引用介绍到此,在下文中将会对引用与const之间的联系进行一些介绍,敬请期待。