[C++学习笔记]const引用
来源:互联网 发布:网络投资 编辑:程序博客网 时间:2024/05/17 22:49
一、左值与右值
左值:能出现在赋值运算符左边或者右边的表达式
右值:只能出现在赋值运算符右边的表达式
二、const引用
示例一:
#include <iostream>using namespace std;int main(){const int val=3;int &ri=val;cout << ri << endl;return 0;}
以上这段代码是错误的。
解释:因为val是const的常量,而紧接着声明了一个非常量的引用ri,引用可以理解为别名,那么ri不是常量,也就是说如果修改ri的值,那么val的值也会被修改,而val是常量,修改是不被允许的。
示例二:
#include <iostream>using namespace std;int main(){int val=3;const int &ri=val;val=4;cout << ri << endl << val << endl;return 0;}
程序运行结果:
4
4
解释:val是变量,初值为3,而ri是val的引用,该实例中,修改ri的值是不可以的,也就是说不能写诸如“ri=4”这样的表达式。
而val=4,也就修改了val的值,自然修改了ri的值。
示例三:
#include <iostream>using namespace std;int main(){double val=3.0;const int &ri=val;val=4;cout << ri << endl << val << endl;return 0;}
程序运行结果:
3
4
解释:这个程序与示例二唯一不同的地方就是在于第六行声明的val是double类型,而const引用是int类型。
那么编译器在这时候就会自动将程序等价的修改为:
#include <iostream>using namespace std;int main(){double val=3.0;int temp;temp=val;const int &ri=temp;val=4;cout << ri << endl << val << endl;return 0;}
由此看来,首先程序将temp初始化为val的值,然后声明一个const引用ri,此时,修改val的值,不会改变temp的值,也就不会改变ri的值了。
因此,程序执行结果是3和4.
另外,const引用还可以将引用初始化为右值,也就是说可以这样写:
const int &ri=11;
而非const引用则不可以将引用初始化为右值,也就是说如果这样写:
int &ri=11;
则是非法的。
- const 引用(c++primer笔记)
- [C++学习笔记]const引用
- C++学习笔记1-const引用
- 学习C++笔记(引用、const、iterator)
- C++学习笔记--再谈const和引用
- 【从C到C++学习笔记】引用/const引用/引用传递/引用作为函数返回值/引用和指针的区别
- C/C++中关于地址、指针和引用变量的学习笔记(六) : const和void
- 【c/c++】const引用
- C++:const和引用
- C++基础学习笔记----第六课(const和引用的扩展、重载函数和C方式编译的深入)
- C学习笔记6 CONST用法
- const 引用——c++ primer 学习笔记
- [C++学习笔记]--位运算、引用、const指针
- 达内学习笔记——引用及const
- C++学习笔记(一)——内存、引用、const
- C++const对象和 引用
- 11、C++const指针 引用
- c传参引用const
- 32个唯美CSS3菜单和导航条教程
- android 知识
- 内核模块编程---符号导出(EXPORT_SYMBOL()) (3)
- .net快捷键大全
- Proxy Action Method DELETE, PUT, GET
- [C++学习笔记]const引用
- APPlication,Session和Cookie的区别
- 常量字符串为什么位于静态存储区?
- Html画组织架构图
- 错误 1 error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartu
- 总结page,request,session,application四个域对象的使用及区别
- lua 的 table 处理
- 读书会2012年总结
- 解决方案:cygwin编译cocos2dx中build_native.sh 出现permission denied