C++语言程序设计

引用是一个变量的别名，除用&取代*外，定义引用的方法与定义指针类似。例如：
double num1 = 3.14;
double &num2 = num1; // num是num2的引用
定义num2为num1的引用，它并没有复制num1，而只是num1的别名。也就是说，它们是相同的变量。例如，如果执行下面的语句：
num1 = 0.16;
则num1和num2 的值均为0.16。
不同于变量的定义：可以先定义，后初始化。正如上面看到的：引用必须在定义时初始化。例如，下面的定义是错误的：
double &num3; // 非法：引用没有初始化
num3 = num1;
引用可用常量来初始化，此时，常量会被复制，引用与其复制值保持一致：
int &n = 1; // n 取1的复制值
为什么用常量初始化引用时要被复制，我们看下面的例子：
int &x = 1;
++x;
int y = x + 1;
第一行的1和第三行的1可能占用相同的存储单元（大多数编译器将两个1分配在内存中相同的地方），虽然我们期望y的值为3，但它的结果可能是4，这是由于第二行的++x运算后，常量1的值变成了2。如果我们使x取1的复制值，可保证x的改变不会影响到常量的值。
其实，引用作为另一个变量的别名用处不是很大，除非变量名很长。引用最重要的用处是作函数的参数。我们知道，函数参数传递有值传递和引用传递两种方式。用引用作为函数，是引用传递方式。为了比较值传递和引用传递的区别，我们仍然以交换两个变量值的函数作为例子：