1:如不加特殊说明,一般认为引用指的都是左值引用。引用实际上是一种隐式指针,它为对象建立一个别名,通过操作符&来实现,引用的形式如下:

数据类型 & 表达式;

例如:

int a=10;

int & ia=a;

ia=2;

上面的程序定义了一个引用变量ia,它是变量名a的别名,对ia的操作与对a的操作完全一样。“ia=2”把2赋给a,“&ia”返回a的地址。执行“ia=2”和执行“a=2”等价。

使用引用的说明如下:

(1)一个C++引用被初始化后,无法使用它再去引用另一个对象,它不能被重新约束。

(2)引用变量只是其他对象的别名,对它的操作与原来对象的操作具有相同作用。

(3)指针变量与引用主要区别有两点:一是指针是一种数据类型,而引用不是一个数据类型,指针可以转换为它所指向变量的数据类型,以便使赋值运算符两边的类型相匹配;而使用引用时,系统要求引用和变量的数据类型必须相同,否则不能进行数据类型转换。二是指针变量和引用变量都用来指向其它变量,但指针变量使用的语法要复杂一些;定义引用变量后,其使用方法和普通变来那个相同。

例如:

int a;

int *pa=&a;

int & ia=a;

示例代码如下:

// 5.16.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <iostream>
using namespace std;
void main()
{
int a;
int & ref_a = a;
a = ;
cout << "a= " << a << endl;
cout << "ref_a=" << ref_a << endl;
a = ;
cout << "a= " << a << endl;
cout << "ref_a=" << ref_a << endl;
int b = ;
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;
}

运行结果:

C++入门经典-例5.16-输出引用-LMLPHP

05-28 03:32