如何快速区分C++左值和右值

简介: C++左值和右值,初学者经常傻傻分不清,可参看“C++ Primer”书中的描述,简单来说:当一个对象被用作右值的时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中的位置)。

C++左值和右值,初学者经常傻傻分不清,可参看“C++ Primer”书中的描述,简单来说:


当一个对象被用作右值的时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中的位置)。


一个重要的原则:在需要右值的地方可以用左值来代替,但是不能把右值当成左值(也就是位置)使用。当一个左值被当成右值使用时,实际使用的是它的内容(值)。


还不明白的话,参见MSDN关于“Lvalues and Rvalues”的描述:


Every C++ expression is either an lvalue or an rvalue. An lvalue refers to an object that persists beyond a single expression. You can think of an lvalue as an object that has a name. All variables, including nonmodifiable (const) variables, are lvalues. An rvalue is a temporary value that does not persist beyond the expression that uses it. To better understand the difference between lvalues and rvalues.

相关文章
|
3月前
|
C++
c++左值和右值,左值引用和右值引用
c++左值和右值,左值引用和右值引用
26 0
|
1月前
|
算法 编译器 C++
【C++ 概念区分】C++ 中覆盖,重写,隐藏 三者的区别
【C++ 概念区分】C++ 中覆盖,重写,隐藏 三者的区别
19 0
|
1月前
|
存储 安全 编译器
C++ std::move以及右值引用全面解析:从基础到实战,掌握现代C++高效编程
C++ std::move以及右值引用全面解析:从基础到实战,掌握现代C++高效编程
79 0
|
1月前
|
存储 编译器 C++
【C++】—— C++11新特性之 “右值引用和移动语义”
【C++】—— C++11新特性之 “右值引用和移动语义”
|
1月前
|
存储 算法 数据可视化
|
2月前
|
算法 编译器 C++
C++新特性 右值引用&&
C++新特性 右值引用&&
|
3月前
|
存储 编译器
C++11(左值(引用),右值(引用),移动语义,完美转发)
C++11(左值(引用),右值(引用),移动语义,完美转发)
32 0
|
3月前
|
C++
C++中的左值、右值、左值引用、右值引用
C++中的左值、右值、左值引用、右值引用
|
3月前
|
编译器 C++
c++左值、右值引用和移动语义
c++左值、右值引用和移动语义
21 0
|
5天前
|
存储 编译器 C语言
c++的学习之路:5、类和对象(1)
c++的学习之路:5、类和对象(1)
19 0