C++ Primer之引用

来源:互联网 发布:猛将源代码修改数据 编辑:程序博客网 时间:2024/06/06 18:24

引用

写在前面的话(可忽略……灰话)!

    引用与指针一直都是各种笔试与面试的常见的题目,而且在编程过程中往往会出现这样或那样的问题,最近又拿起了PRIMER来看,记下一点看书笔记。


引用与指针在C++中称作复合类型,这是相对于简单的INT等类型而言的。

1.引用

引用其实是一个左值引用。

1.1 定义

       引用为对象起了另外一个名字,引用类型引用另外一种类型。引用并非对象,它只是给已经存在的对象起了另外一个名字而已。引用即别名!定义引用类型的方法将声明符写成&refVal,其中refVal为声明的变量名。

//refVal指向ival(是ival的另外一个名字)

int ival = 1024;

int &refVal = ival;



1.2 初始化

   引用是需要初始化的,而且是必须初始化的。

       对于一般变量,它们在初始化时,初始值会被拷贝到新建的对象中。然而在定义引用时,程序会把引用与它的初始值进行绑定在一起,而不是简单的将初始值拷贝给引用。因而一旦初始化完成,引用将和它的初始值对象一直绑定在一起。而对于引用的特性它不允许一个引用绑定到多个对象,因此对于引用它必须被初始化之后才能使用。

//refVal指向ival(是ival的另外一个名字)

int ival = 1024;

int &refVal1= ival; //正确:refVal1被初始化为ival的值

int &refVal2;//报错:refVal2引用必须初始化


1.2 引用的操作

在定义一个引用之后,对于引用的所有操作,其实就是针对于被引用绑定的对象的操作。而获取引用的值其实就是获取与引用绑定的对象的值。当将引用作为初始值时,其实际上是以与引用绑定的对象作为初始值。

refVal = 2;//把2赋值给指向的对象,此外是赋给了ival

int ii = refVal;//与执行ii = ival结果一样

//正确:refVal3绑定到了那个与refVal绑定的对象上,这里就是绑定到ival上

int &refVal3 = refVal;

  //利用与refVal绑定的对象的值初始化变量i

int i = refVal;//正确:被初始化为ival的值


在应用引用时要注意以下几点:

  • 引用必须初始化;
  • 一个引用只能对应一个对象;
  • 引用不能被初始化为字面值或者计算结果;
  • 引用与对象的数据类型需要一致。

原创粉丝点击