C++11笔记:左值引用、右值引用与完美转发
C++11笔记:左值与右值搞明白左值与右值,下面理解左值引用与右值引用。
1. 左值引用与右值引用
左值右值一直存在,只从右值引用出现,这对CP变得重要起来,那么为什么要有右值引用?没有右值引用C++不是活得好好的吗?一切要从左值引用说起。
在C++11之前,没有左值引用与右值引用之分,引用专指左值引用。那个时候就出现了不和谐的情况。
#include <iostream>
using namespace std;
void Print(string& s){
cout << s;
}
int main(){
string s="abc";
Print(s); // OK
Print("abc"); // parse error
}
函数Print()
能够打印s
,却不能打印"abc"
。
自定义对象也会出现这种情况
#include <iostream>
using namespace std;
class Demo{
};
void Func(Demo &){
cout << "Func(Demo &)" << endl;
}
int main