分类: 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