您的位置:首页 > 其它

第一部分 基本语言 第二章 变量和基本类型(2.5引用)

2013-03-17 10:44 411 查看
2.5引用:

引用就是对象的别名,在程序中引用主要用作函数行参。引用是一种复合类型,是另一种类型定义的类型。在引用情况下,每一种引用都关联到某一其他类型。不能定义引用的引用类型,但可以定义任何其他类型的引用。

一、引用必须与该引用同类型的对象初始化。定义引用时必须初始化。

int ival=1024;
int &rval=ival;//正确

int &rval;//错误,定义引用类型时必须初始化。

int &rval=10;//错误,初始化引用类型必须用同类型对象初始化。

二、引用是别名:

引用是绑定对象的另一个名字,作用在引用上的结果都会关联到该引用绑定的对象上。引用初始化定义之后不可更改绑定对象,对于变量所表示的那块内存,既可以通过变量名访问,也可以通过引用访问,两者访问的都是同一块内存,所以无论是作用在变量名还是在引用上的操作都会对内存产生更改。

三、定义多个引用:

可以在一个类型定义中定义多个引用,一个对象也可以定义多个引用。

程序示例:

#include
<iostream>

using namespace::std;

int g;

int main ()
{
int i=1024,i2=2048;
int &r=i,r2=i2;
int i3=1024,&ri=i3;
int &r3=i3,&r4=i2;
r4=5;
cout<<"i2: "<<i2<<" "<<"r2:
"<<r2<<endl;
}
输出结果:

i2: 5 r2: 2048

具体情况如下



1、r3与ri同时都是i3的引用,修改其中任意一个都会对i3的值产生影响。

2、r4是i2的引用,i2将值付给r2,这时候修改r4,会对i2产生影响,但并不会对r2的值产生影响。赋值定义在引用修改对像之前不改变r2,但赋值定义如果在引用修改对象之后要改变被赋值对象的值。

四、const引用:

const引用是对const对象的引用,另外const对象如果要定义引用的话只能定义const引用。如果将const对象定义一个非const引用就会报错,因为非const引用可以修改绑定对象,而const是只读型类型,不能被修改。所以报错。而将引用定义成const,也就不能通过修改引用来修改const对象,保护了const对象。

const对象定义引用必须是const引用,但const引用却能初始化为不同类型(相关联)的对象,同样的初始化对于非 const对象是非法的(引用初始化必须要是同类型)

当const引用绑定到不同类型的对象时,编译器会生成临时变量来转化不同类型,将引用绑定到转化后的临时变量上。注意:转化后遵循强制类型转化规则。精度有可能缺失。

程序示例:

#include
<iostream>

using namespace::std;

int g;

int main ()
{
double dval=3.14;
constint &a=dval;
cout<<"dval: "<<dval<<" "<<"a:
"<<a<<endl;
}
输出结果:
dval: 3.14 a: 3

通过const引用并不能修改绑定对象,const为只读类型引用。

习题解答:
1、下列那些定义非法,为什么,如何改正?

int ival=1.01;
int &rvall=1.01;
int &rval2=ival;
constint &rval3=1;

答:1、非法,将浮点数赋值给整形会导致精度缺失。
2、非法,将字面值常量赋给引用型类型。
3、合法,类型相同。
4、合法,可以将字面值常量赋给const引用。
2、在上题给出的定义下,下列那些赋值是非法的,如果赋值合法,解释赋值的作用。

ival2=3.14159;
rval2=rval3;
ival=rval3;
rval3=ival;
答:1、合法,将ival的值修改为3.14159.
2、合法,const引用可以作为右值。
3、合法,将ival赋值为1.
4、非法,rval3是const类型,不能接受赋值。
3、(a)中的定义和(b)中的赋值存在那些不同?哪些是非法的?

(a)

int ival=0;
constint &ri=0;
(b)

ival=ri;

ri=ival;
答:定义存在初始化的过程,赋值是刷新内存中的值。(b)中第二条非法,将值赋给const引用。

4、下列代码输出什么?

int i,&ri=i;
i=5;ri=10;
std::cout<<i<<" "<<ri<<std::endl;
答:10,10
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐