引用有两种:左值引用,右值引用。
引用是复合类型,类似于起别名,通过在变量前边加 & 来定义。
int a = 10;
int b = 11 int& ra = a;
int&& rb = b+1; //只能引用右值
1.定义引用时,必须指明白要引用的对象。
2.左值引用引用的对象必须是一个左值,const可以引用临时变量
long& rdata = 10; //error const long& rdata = 10; //Okay
3.与指针差异就是访问数据方式不一样
long data_0 = 10; long *pdata = &data_0; long& rdata = data_0; std::cout << *pdata << " " << rdata << std::endl;
4.右值引用必须引用右值
long data = 10; long&& rdata = data; //error long&& rdata = data+1;