您的位置:首页 > 编程语言 > C语言/C++

C++中的引用与const

2016-04-28 13:59 435 查看
C++中引用与const的组合很容易引起困扰,这篇文章将对这一问题进行简要介绍。

首先,要明确一些原则:

(1) const是限定符,可以放在引用符&,指针符*的后面,比如:*const,&const;而int是类型符,不能放在&和*的后面,比如:*int,&int都会出错。

(2) 引用必须初始化,且初始化后不能更改绑定,因此,引用与生俱来便具备const的性质。

(3) &const r = i 实际上是限定了不能修改r的绑定(并非与r绑定的变量i的值),而C++已经规定了引用r本身不能更改绑定,因此这里添加const修饰是多余的。&const r 等价于 &r。

假设有int i = 40,引用与const的可能的组合形式有如下几种:

(1) const int &r = i; 正确,不能修改r,可以修改i

(2) int const &r = i; 正确,与(1)等价

(3) const int const &r = i; 警告,多次使用同一类型限定符,实际上与(1)和(2)等价

(4) int &const r = i;  等价于int &r = i,可以修改r(不能更改r的绑定,但可以通过r修改变量i的值),也可以修改i。出现警告:使用了记时错误: 忽略引用上的限定符。

(5) const int &const r = i; 等价于(1),出现警告:使用了记时错误: 忽略引用上的限定符。

假设有const int i = 40,引用与const的可能的组合形式有如下几种:

(1) const int &r = i; 正确,不能修改r,不能修改i

(2) int const &r = i; 正确,与(1)等价

(3) const int const &r = i; 警告,多次使用同一类型限定符,实际上与(1)和(2)等价

(4) int &const r = i;  错误:无法从“const int”转换为“int &”

(5) const int &const r = i; 等价于(1),出现警告:使用了记时错误: 忽略引用上的限定符。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ const 引用