什么是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++引用形参?的主要内容,如果未能解决你的问题,请参考以下文章

传入参数 指针 引用和 什么都不加的区别

c++中重载输出操作符,为啥要返回引用

C++重载输出操作符<<,为什么要返回引用

如何正确使用函数形参提高C++程序性能

c++产生非常量引用的初始值必须是左值

C++ 值传递指针传递引用传递详解