使用C++的const引用的需要额外注意的两点
程序员文章站
2024-01-02 14:39:04
...
写在前面:
根据《C++ primer 5 th》的引用章节的讲述,除了下面即将要介绍引用的两个例子外,其他所有的有引用的类型都要与之绑定的对象的类型严格匹配。
例外情况一:初始化常量引用时允许任意表达式(非常量的对象、字面值、甚至是一个一般表达式)作为初始值
int i=42;
const int &it1=i; //正确:允许const int&绑定到一个普通int对象
const int &it2=42; //正确:允许const int&绑定到字面值
const int &it3=it1*2; //正确:it1是一个常量引用
int &it4=it1*2; //错误:it4一个普通的非常量引用
关于it4,编译器会报错:
例外情况二:一个常量引用被绑定到另外一种类型上时,称为非法行为
double test = 3.14;
const int &it = test;
test = 4;
cout << it << endl;
注:
it并非绑定的是test的值3.14,而是绑定的是临时的int类型值3。由下面的调试窗口可知,it没有与test绑定,绑定的值是3,这种行为在c++中就是被称为非法行为。
调试窗口如下: