西汉演义txt全集下载:const reference和nonconst reference

来源:百度文库 编辑:九乡新闻网 时间:2024/05/06 12:36:58
普通的reference必须用与该引用同类型的对象来初始化。例如:int ival = 1024;
int &refVal = ival;   // ok: refval refers to ival
int &refVal2;         // error: 引用必须初始化
int &refVal3 = 10;    // error: 必须用对象进行初始化,而不能是字面值常量(literal constant)
 
const int ival2 = 256;
int &refVal4 = ival2; // error: 注意const int和int是不同类型
 
register int ival3(512);
int &refVal5 = ival3; // ok: 不管是寄存器变量还是自动变量
而const reference的限制则没那么多。例如:const int ival = 1024;
const int &refVal1 = ival;  // ok: 类型匹配
const int &refVal2 = 1024;  // ok: 1024称为字面值常量(literal constant),也是const int类型,匹配
const int &refVal3 = ival + 256; // ok: 可以用表达式
const int &refVal4 = fnc(); // ok: 可以是函数返回值
double dval = 3.14;
const int &ri = dval;    // ok: 可以是不同类型
实际上09行在编译时编译器会把它转化为形如const int temp = dval;
const int &ri = temp;
注意到隐式转换从double型转为const int型,编译时会出现一个warning参考:
C++ Primer中文版(第4版)
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chance_wang/archive/2008/10/03/3014595.aspx