值类别
左值
右值
亡值 有身份 可被移动(如static cast的返回值,声明为返回右值引用的函数的返回值)
主要看有没有身份吧
引用所表达的语义和指针不同的在于,不存在空引用,引用不能更改绑定
引用是对象的别名,必然是左值
在c++11之前,只有non-cast rvalue reference无法被捕获,无法实现move语义
故引入右值引用
左值不能匹配到右值引用参数,否则左值资源会被偷走
右值可以匹配常左值引用参数
右值引用只能由右值初始化
引用拓宽了生命期
值类型
值,引用(引用,指针)