开门见山,C++中有三个东西,分别叫做:引用,常量,常量引用。下面阐述三者各自的语法和联系。
撇去什么string类型的引用不谈,举最简单的例子吧(int类型)。
1.引用
比如对int类型的引用如下:
int a=1;
int &b=a;
这里定义了一个(普通)引用 b ,它所指向的是int类型,所以可以把int类型的变量赋给它。
因此这样做是错的:
int &b=1;//b所指向的是int类型的变量,不是字面量
int &b;//b作为引用必须初始化,它不能脱离实际变量而存在
但是可以通过引用改变它所指向的变量:
int &b=a;
b=3;//a,b的值同时变成了3
嗯,好像对于引用就这么多性质。
个人感觉:引用就像是一个指针,它可以改变指向变量的值,换句话说引用是变量的另一个名字,引用的使用承担了指针的一部分功能,而且更加实用和简洁。
附:(指针实现上述功能代码)
int a=1;
int *b=&a;//取地址
*b=3;//a,*b同时变成3
2.常量
同样常量也必须初始化:
const int a=1;//如果不初始化,a的初值就会变成垃圾值而且无法修改
const int c=f();//初始化可以是一个表达式或函数,而引用则不行
一旦初始化以后,const所确定的值真正实现了无法修改(不然为什么叫常量....)
错误示例:
int &b=a;//错误,引用可以修改,这样做意味着a可以修改,而a是一个const类型的值
3.常量引用
这两个东西结合起来便有了这样的产物:
int a=1;
int f(){}
const int c=1;
const int &b=a或者f()或者c或者3;//可以初始化为一个int,const int,函数及表达式,字面量的值,但必须初始化
继承了引用和常量的特色,这产物似乎变得高级起来,连初始化都很强大呢(但不可以修改值QAQ)