您好,欢迎来到欧得旅游网。
搜索
您的当前位置:首页C++:引用作为返回值

C++:引用作为返回值

来源:欧得旅游网


 例如,下面的程序是有关引用返回的4种形式:
    //*********************
    //**   ch9_6.cpp  **
    //*********************
    #include <iostream.h>
    float temp;
    float fn1(float r)
    {
     temp = r*r*3.14;
     return temp;
    }
    float& fn2(float r)
    {
     temp = r*r*3.14;
     return temp;
    }
    void main()
    {
     float a=fn1(5.0); //1
     float& b=fn1(5.0); //2:warning
     float c=fn2(5.0); //3
     float& d=fn2(5.0); //4
     cout<<a<<endl;
     cout<<b<<endl;
     cout<<c<<endl;
     cout<<d<<endl;
    }
  运行结果为:
    78.5
    78.5
    78.5
    78.5
  对主函数的4种引用返回的形式, 程序的运行结果是一样的。但是它们在内存中的活动情况是各不相同的。其中变量temp是全局数据,驻留在全局数据区data。函数main()、函数fnl()或函数fn2()驻留在栈区stack。
  第一种情况:见图9-5。


图9-9 返回的引用是局部变量
  如果返回的引用是作为一个左值进行运算,也是程序员最犯忌的。所以,如果程序中有下面的代码,则一定要剔除:
    float& fn2(float r)
    {
     float temp;
     temp=r*r*3.14;
     return temp;
    }
    void main()
    {
     fn2(5.0)=12.4; //error返回的是局部作用域内的变量
    }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- ovod.cn 版权所有 湘ICP备2023023988号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务