zoukankan      html  css  js  c++  java
  • 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();

     

  • 相关阅读:
    Oracle-增加字段
    Oracle数据库将varchar类型的字段改为Clob类型
    将Oracle数据库字段长度进行修改
    http请求util
    读取excel文件后,将一行数据封装成一个对象,多行返回一个map对象即可
    使用tushare 库查阅交易日历
    python winsound模块
    python可视化:matplotlib系列
    期货、股指期权、ETF期权
    股指期货
  • 原文地址:https://www.cnblogs.com/god-for-speed/p/10876359.html
Copyright © 2011-2022 走看看