时间:2021-05-20
const引用是指向const对象的引用。
复制代码 代码如下:
const int i = 10;
const int &ref = i;
可以读取ref,但不能修改。这样做是有意义的,因为i本身就不可修改,当然也不能通过ref来修改了。所以也就有将const变量赋值给非const引用是非法的。
复制代码 代码如下:
int &ref1 = i; // error: nonconst reference to a const object
非const引用是指向非const类型变量的引用。
const引用可以初始化为不同类型的对象或者右值(如字面值常量),但非const引用不可以。
复制代码 代码如下:
// legal for const references only
int i = 10;
const int & ref = 42;
const int & ref1 = r + i;
double d = 3.14;
const int &ref2 = d;
以绑定到不同类型的ref2为例解释原因,编译器会把ref2相关的代码转换如下:
复制代码 代码如下:
int temp = d;
const int &ref2 = temp; // bind ref2 to temporary
ref2实际上是绑定到一个临时变量上,如果ref2不为const,那么按道理就可以通过修改ref2而修改d的值,但实际上d并不会改变。所以为了避免这个问题,ref2只能是const。
非const引用只能绑定到与该引用同类型的对象,const引用则可以绑定到不同但相关的类型的对象或绑定到右值。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
C++引用—临时变量、引用参数和const引用如果实参与引用参数不匹配,C++将生成临时变量。如果引用参数是const,则编译器在下面两种情况下生成临时变量:实
C++类中变量也可以是引用哈------要用初始化列表来初始化(因为C++引用一旦绑定,就无法更换,有点类似const)#includeusingnamespa
C++中const对象与const成员函数的实例详解const对象只能调用const成员函数:#includeusingnamespacestd;classA{
浅析C++的引用与const指针与各种传递方式首先我们知道constint*p与intconst*p是一样的,即*p是常量;而int*constp跟上面是不一样
C语言中const和C++中的const区别详解C++的const和C语言的#define都可以用来定义常量,二者是有区别的,const是有数据类型的常量,而宏