C学习目标最简单实用的引用类型介绍

北京中科白殿风医院好不好 http://finance.sina.com.cn/chanjing/b/20090930/09073071708.shtml

引用(reference)类型可以理解为别名,对一个变量的引用进行操作,和对一个变量直接操作并无差别。

引用由类型标识符和一个取地址操作符()来定义(注意,和变量名之间可以有空格),如:

intnValue=;

intrnValue=nValue;

与指针类型相比(可参考《最简单实用的指针类型介绍》),引用的定义有一些特殊要求:

(1)引用变量需要在定义时被初始化,如:

intrnValue;//VS编译器报错:errorC:“rnValue”:必须初始化引用

(2)不存在空引用,如:

intrnValue=0;//VS编译器报错:errorC:“初始化”:无法从“int”转换为“int”

(3)一旦引用变量已经被定义,它就不能再指向其他的对象,如:

intnValue=;

intrnValue=nValue;

intnValue2=;

rnValue=nValue2;//编译器不报错,但不会改变rnValue的引用指向,且会导致nValue被赋值为,与预期意图不符

既然引用有这么多限制,那它的好处是什么?答案是这些限制其实就是它的好处。

下面将引用和指针放一起比较,然后反向理解一下:

(1)指针地址被篡改后,会指向非预期的对象。而引用本身不会被篡改指向。这样调试过程中就不用监视指针地址是否变化了。

(2)空指针解引用会导致程序崩溃,使用时经常需要对空指针进行防护。而引用不存在空引用,避免了该错误,减少了防护代码。

(3)指针被传递后,经常要检查是否被篡改。而引用肯定指向的是原先的对象。

C++PrimerPlus第6版中文版(异步图书出品)京东月销量好评率98%无理由退换京东配送官方店¥购买

在面向对象编程里,如果严格要求编码规范,再合理使用设计模式,完全可以将指针类型全部用引用类型代替。一个实用的建议:请尽量使用引用,而不是指针。

结合VS库代码看看引用类型的用法。如STL库文件“map”方框处的引用类型:

MFC库文件“winctrl2.cpp”方框处的引用类型:

总体而言,引用使用起来比指针更安全好用。

学习目标“最简单实用的引用类型介绍”已完成[再见]




转载请注明:http://www.aierlanlan.com/rzfs/3487.html