C++引用小结
一、引用更多的是用于函数参数的传递,类似于指针,但比指针稍微方便
形参的值通过函数改变了,那么返回的实参的值也会改变。
简单记为(对某个变量的引用,则这个引用就是该变量的别名,对引用的操作,即对该变量的操作)
#include <iostream> using namespace std; void show(int &b) { b=100; } int main(int argc, char** argv) { int a=200; cout<<a<<endl; show(a); cout<<a<<endl; return 0; } /*结果为200 100 若将show函数改为void show(int b) 则结果为200 200*/
二、引用作为函数返回值
引用作为函数的返回值,1.在主函数中可以用普通的变量=XXX(),Int &a=XXX(),都会警告,必须在XXX()函数中将返回变量的引用的变量修改为static类型警告消失
2.XXX()可以当左值如:XXX()=1000;
下面是对应的测试代码
#include <iostream> using namespace std; int &show() { static int a=20; return a; } int main(int argc, char** argv) { int b=show(); //若使普通变量=show()时,无论show()在主函数怎么赋值,普通变量依旧等于最初传到主函数的show()值。 // int &b=show(); //若使用引用=show()时,show()的值在主函数改变会影响引用的改变。 cout<<b<<endl; show()=1000; //引用作为函数的返回值时,可以作为左值 cout<<b<<" "<<show(); return 0; }
可以简单理解,函数返回值是引用时,假设存在一个临时变量temp,则&temp=函数的返回值如上面程序的a,
传到主函数时,1.若为普通变量x,则x=temp;(X改变不影响原函数返回值)
2.若为引用x,则&x=temp;(X改变会影响原函数的返回值)
通过这么思考,可以发现引用作为函数的返回值和一般引用的用法很相似,差别不大。
三、对常量的引用需要加const
int &a=30;//错误 const int &a=30;//正确
四、当成员函数返回对象本身,且对一个对象连续调用成员方法,每次都会改变对象本身,成员方法需要返回引用
如test &show()
如:test &t() { return *this; } main函数中 test t1; t1.t().t();