2.15:下面的哪个定义是不合法的?为什么?

(a)int ival=1.01;  (b)int &rvall=1.01;

(c)int &rval2=ival;  (d)int &rval3;

a)合法。但是会出现警告;

b)不合法。初始化引用的值必须是对象,而不能是字面值;

c)合法。

d)不合法。引用必须初始化。

2.16:考查下面的所有赋值然后回答:哪些赋值时不合法的?为什么?哪些赋值是合法的?它们执行了什么样的操作?

int i=0,&r1=i;  double d=0,&r2=d;

a)r2=3.14159;  b)r2=r1;

c)i=r2;      d)r1=d;

a)合法。它将3.14159赋值给引用r2,实际上是对变量d进行赋值;

b)合法。r1是int类型i的引用,而r2是double类型的引用,会出现警告。

c)合法。i是int类型,引用r2是double类型,执行了窄化操作。

d)合法。与c)一样。

2.17:执行下面的代码段将输出什么结果?

int i,&ri=i;  

i=5; ri=10;

std::cout<<i<<" "<<ri<<std::endl;

输出结果:10 10

 posted on 2018-07-20 19:37  linlh  阅读(206)  评论(0编辑  收藏  举报