什么是C++引用形参?
Posted tangbolibao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是C++引用形参?相关的知识,希望对你有一定的参考价值。
1.引入问题
在我们浏览别人代码时经常发现有这种函数 void func(int& info);或者 void fun(int && info); 有些人一眼或许猜是地址,是地址的地址,这样并不全面,如果想全面了解就要认识左值 和 右值!!
2.什么是左值和右值(认识左值右值)?
int x = 10; x代表非常量左值,10代表非常量右值
const int y = 5; y代表常量左值,5代表非常量右值
int& z ; z代表非常量左值,
int &&m; m代表非常量右值
总的来说左值就是有实际地址可以赋值操作,而右值不可行!!
3. 传参时左值右值区别和限制关系!!
int func(int &a); 非常量左值只能接受非常量左值比如int& x;
int func(int &&a) 非常量右值只能接受非常量右值传参比如 30;
int func(const int& x) 常量左值是万能引用传参 【还有一个是类模板的万能引用传参具体自己查资料吧】
4.传参过后变成了什么?
int &x = 6;
func(int& x) cout<<"x"<<endl;
输出为6
意思是不管是左值传参还是右值传参不要过分纠结是几个&符号,具体还要看是左值右值,传进来后变量名就是实际的值!!关于多个&符号读者可以选择查阅引用折叠
以上是关于什么是C++引用形参?的主要内容,如果未能解决你的问题,请参考以下文章