0.1 左值和右值
- lvalue(ell-value):
- 左值是可寻址的变量,有持久性。既可以出现在等号左边,也可以出现在等号右边
- 左值表达式的求值结果是一个对象或者一个函数,有些左值不能成为赋值语句的左侧运算对象(const)。当对象被用作左值的时候,用的是object’s identity(its location in memory)。
- rvalue(are-value):当一个对象被用作右值的时候,用的是对象的值(the object’s content)
- 右值一般是不可寻址的常量,或在表达式求值过程中创建的无名临时对象,短暂性的
int a; // a 为左值 |
需要右值时,可以使用左值,反之不行
-
左值引用:引用一个对象;
-
右值引用(rvalue reference):就是必须绑定到右值的引用,C++11中右值引用可以实现“移动语义”,通过 && 获得右值引用。必须绑定到右值的引用,可以绑定到一个将要销毁的对象
int x = 6; // x是左值,6是右值 |
1 chapt 12
smart pointer:管理动态对象
shared_ptr:允许多个指针指向同一个对象
unique_ptr:独占所指向的对象
weak_ptr:弱引用,指向shared_ptr所管理的对象
管理动态内存:
-
忘记delete动态分配的内存(内存泄漏)
-
在对象delete后使用
-
同一块内存delete多次