Chinaunix首页 | 论坛 | 博客
  • 博客访问: 196062
  • 博文数量: 19
  • 博客积分: 1422
  • 博客等级: 上尉
  • 技术积分: 235
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-04 17:46
文章分类

全部博文(19)

文章存档

2011年(1)

2009年(2)

2008年(9)

2007年(7)

我的朋友

分类: C/C++

2008-05-25 12:44:29

引用类型可以和指针一样指向某个变量,但两者在使用的时候还是有许多区别,

1.声明一个引用类型后,一定要给他赋值,否则编译通不过,特别是在类中,如果有引用成员变量时,一定要在构造函数的初始化列表中初始化,例如:

class foo

{

public:

foo(){}

private:

int& var;

};

foo f; // Error, 没有初始化引用变量var

2.引用类型在使用时有一定的限制,函数不能返回一个临时变量的引用,例如:

//Error

int& foo(int a, int b)

{

int c;

c = a + b;

return c;

}

变量c是临时变量,返回c的引用可能会引起严重错误

3.引用类型适用于函数传递参数,这是非常方便的,避免了复制拷贝,但要注意的是,传递的参数必须是变量,而不能是数值常量,例如:

int foo(int& a, int& b)

{

return a+b;

}

//

int a =0, b=1, c=2;

char d='d';

a = foo(b, c); //OK

a = foo(b, (int)d); //Error

a = foo(1, 2); //Error

4.引用变量一旦指向某个变量后,就不能再改变它所指向的引用,只能改变指向变量的值,因此如果需要动态改变它所指向的变量,那么引用类型就不适用了,那就该用指针,例如:

int a =10;

int& ref = a;

a = 20; // ref=20

ref = 30; // a=30


阅读(1983) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~