const限定符(二)

2016-01-12  本文已影响0人  Troll__Zhao

在前面我们说过,引用的类型必须与其所引用的对象的类型相同,但是有个例外初始化常量引用的时候允许任意表达式作为初始值,只要该表达式能转化为引用的类型
即允许一个常量引用绑定到一个非常量对象、字面值、甚至是一个一般表达式上:

int i = 42;
const int &r1 == i;        //允许const int绑定到一个普通的int对象上
const int &r2 = 42;        //r2是一个常量引用
conts int &r3 = r1 * 2;    //r3是一个常量引用
int &r4 = r1 * 2;            //错误:普通引用不能绑定到常量引用

实际上,当一个常量引用被绑定到另外一种类型上的时候:

double dval = 3.14;
const int &ri = dval;

上述代码在编译器中的形式是:

double dval = 3.14;
const int temp = dval;      //双精度浮点数生成一个临时的const int对象
const int &ri = temp;        //ri绑定了这个临时变量
上一篇 下一篇

猜你喜欢

热点阅读