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();

 

 

posted @ 2019-05-16 16:24  LBC不认输  阅读(340)  评论(0编辑  收藏  举报