引用实际上是一种隐式指针,它为对象建立一个别名,通过操作符&来实现。&是取地址操作符,通过它可以获取地址。
引用的形式如下:
数据类型 &表达式;
eg:
int a=100;
int & ia=a;
ia=2;
定义了一个引用变量ia,它是变量a的别名,对ia的操作与对a的操作完全一样。ia=2把2赋给a, &a返回a的地址。执行ia=2和执行a=2等价
。
使用引用的说明:
(1)一个C++引用被初始化后,无法使用它再去引用另一个对象,它不能被重新约束。
(2)引用变量只是其他变量的别名,对它的效果与原来对象的操作具有相同的效果。
(3)指针变量和引用有两点主要区别:一是指针是一种数据类型,而引用不是。指针可以转换为它所指向变量的数据类型,以便赋
值运算符两边的类型相匹配;而在使用引用是,系统要求引用和变量的数据类型必须相同,不能进行数据类型转换。二是指针变量
和引用变量都是用来指向其它变量,而指针变量使用的语法要复杂一些;而在定义了引用变量后,其使用方法和普通变量一样。
eg: int a=100;
int *p=&a;
int &ia=a;
(4)引用应该初始化,否则会报错。
eg:
int a;
int b;
int &a;
编译器会报出reference must be initialized 只要的错误,造成编译不能通过。
下面看个example:
/*
* main.cpp
*
* Created on: 2012-9-17
* Author: china
* Demo
* 引用!!!!!!!!!!!!
*/
#include <iostream>
using namespace std;
int main(int argc, char **argv) {
int a;
int &ref_a = a;
a = 100;
cout << "a=" << a << endl;
cout << "ref_a=" << ref_a << endl;
a = 2;
cout << "a=" << a << endl;
cout << "ref_a=" << ref_a << endl;
ref_a = 3;
cout << "a=" << a << endl;
cout << "ref_a=" << ref_a << endl;
int b = 20;
ref_a = b;
cout << "a=" << a << endl;
cout << "ref_a=" << ref_a << endl;
ref_a--;
cout << "a=" << a << endl;
cout << "ref_a=" << ref_a << endl;
return 0;
}
//程序声明了变量a和一个队变量a的引用ref_a,通过不断地改变a和引用ref_a的值,来使用引用。
输出结果为:
a=100
ref_a=100
a=2
ref_a=2
a=3
ref_a=3
a=20
ref_a=20
a=19
ref_a=19
=========================================