左值和右值
本文整理自网文,如有冒犯,请告知删除。 左值(lvalue)和右值(rvalue) 左值(lvalue)和右值(rvalue)是c/c++中的基础概念。 简单理解为:有名字的是左值,没有名字的是右值。
C C语言中,左、右值均可为变量或表达式 C语言中,左值可出现在=号左边,也可出现在=号右边 C语言中,右值只能出现在=号右边 int x, y; x = 1; y = 2; x = y; y = x; 2 = x; //err x,y为左值,2为右值 CPP CPP语言中,一个表达式会产生一个左值,或者一个右值,前者称为左值表达式,后者称为右值表达式。 CPP语言中,对于基本类型,左值和右值概念与C语言相同。 CPP语言中,对于自定义类型,右值允许通过它的成员函数进行修改。 class A { public: A(int i) : _i(i) {} A& operator=(const A& other) { _i = other._i; return *this; } void set(int i) { _i = i; } int get() { return _i; } private: int _i; }; int main() { A a(5); auto f = [&] () ->A { return a; } f().……