(学习笔记)从引用参数谈到左右值
来源:互联网 发布:windows更新消失 编辑:程序博客网 时间:2024/06/08 06:15
关键点1:
非常量引用的初始值必须为左值!
什么是左值? 能放在等号左边的值?
关键点2:
左值是可以对其取地址的值!这是一个区分左值和右值的便捷方法。
这意味着,左值是一个存储在内存中的某个存储单元的数据,该数据的值是可以被改变的!
这也就是为什么“非常量的”引用值必须是左值的原因了!!!
看下面的题目:
有下面一个类声明:
class A{ public: int a ; A(int _a){ a = _a;} int f1(A& aa); int f2(const A& aa); int f3( const A aa); int f4(A aa);}
那么:
f1(0); //错误,报错,为啥?看看开头的第一句!!
f2(0); //正确
f3(0); //正确
f4(0); //正确
三个正确的函数调用其实都会经历一个强制类型转换吧?我是这么理解的。求大神解释!
那么,什么是右值呢?
右值是Read-value: 只读的值!!!
const int a = 0;
int b = 0;
b+2 = a; //错,(b+2)就是一个右值
a = b+2; //错,a是左值,但是只读的
可能,会问为什么a是只读的,但是不是右值,
int * a_address = &a;
*a_address = 1;
是不是就改变的a的值啦?好像可以吧;
0 0
- (学习笔记)从引用参数谈到左右值
- C#学习笔记二 引用参数和值参数
- 从决策树学习 谈到贝叶斯分类算法
- STL 源码剖析 笔记 2:左右值 值和引用
- C++学习笔记(四)--内联函数,引用参数,默认参数,函数重载,函数模板
- 【从C到C++学习笔记】引用/const引用/引用传递/引用作为函数返回值/引用和指针的区别
- C++学习笔记(四)——关于数组作为函数参数的值传递和引用传递
- 从决策树学习谈到贝叶斯分类算法、EM、HMM
- 从决策树学习谈到贝叶斯分类算法、EM、HMM
- 从决策树学习谈到贝叶斯分类算法、EM、HMM
- 从决策树学习谈到贝叶斯分类算法、EM、HMM
- 从决策树学习谈到贝叶斯分类算法、EM、HMM
- 从决策树学习谈到贝叶斯分类算法、EM、HMM
- 从决策树学习谈到贝叶斯分类算法、EM、HMM
- 从决策树学习谈到贝叶斯分类算法、EM、HMM
- 从决策树学习谈到贝叶斯分类算法、EM、HMM
- 从决策树学习谈到贝叶斯分类算法、EM、HMM
- 从决策树学习谈到贝叶斯分类算法、EM、HMM
- 智能指针的模拟实现 auto_ptr scoped_ptr shared_ptr
- [并查集 树] BZOJ 4551 [Tjoi2016&Heoi2016]树
- 智能指针的模拟实现shared_ptr 循环引用 定置删除器
- 利用栈计算算数表达式的值
- 稀疏矩阵的压缩存储与转置
- (学习笔记)从引用参数谈到左右值
- 大数据的运算加减乘除
- 迷宫问题并求最短路径
- 迷宫问题
- 广义表的相关操作
- 位图
- 布隆过滤器
- 从1到n整数中1出现的次数
- Linux中文件的查找whereis、locate、find