表达式
左值和右值
概念
左值:有标识,并能取地址;
右值:纯右值---函数返回值非引用类型,原始字面量,运算表达式,lambda表达式,类型转换函数返回值;
将亡值---要移动的对象,move的返回值,返回右值引用的函数返回值,转换为右值引用的转换函数返回值 ;
以上有待考证
转换 std::move
将左值转换为右值引用,相当于static_cast<T&&>(lvalue);
PS:C++11,#inclue<utility>
移动构造函数
T Object(T &&);
形参是非常量右值引用(需要实现移动语义,修改临时变量的值,不能是常量右值),实参是非常量右值
T Object(const T &); ---> 拷贝构造函数
形参是常量左值引用,实参是常量右值时调用该函数
T Object(T &); ---> 拷贝构造函数另一种形式
形参是非常量左值引用,仅实参是非常量左值时调用该函数
语句
三大流程控制
顺序控制
try{} catch (const std::exception& ){}
do while(false)
分支控制
循环控制
while
do...while...
- do{ ... }while(false); 转换成顺序控制
for
- for(int i=0;i<N;i++){ ... }
- for_each(container.begin(), container.end(), lambda表达式) #include<algorithm>
- for(auto i : container){ ... } (c++11)
- std::max_element/std::min_element/std::minmax_element
例如:for (bool callRestore : { false, true }) { }