科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件C++中的引用

C++中的引用

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

介绍C 引用的基本概念,通过详细的应用分析与说明,对引用进行全面、透彻地阐述

作者:计算机与信息技术 来源:计算机与信息技术 2007年9月15日

关键字: 软件

  • 评论
  • 分享微博
  • 分享邮件
2、常引用

常引用声明方式:const 类型标识符 &引用名=目标变量名;

用这种方式声明的引用,不能通过引用对目标变量的值进行修改,从而使引用的目标成为const,达到了引用的安全性。

【例3】:

int a ;

const int &ra=a;

ra=1; //错误

a=1; //正确


这不光是让代码更健壮,也有些其它方面的需要。

【例4】:假设有如下函数声明:

string foo( );

void bar(string & s);


那么下面的表达式将是非法的:

bar(foo( ));

bar("hello world");

原因在于foo( )和"hello world"串都会产生一个临时对象,而在C++中,这些临时对象都是const类型的。因此上面的表达式就是试图将一个const类型的对象转换为非const类型,这是非法的。

引用型参数应该在能被定义为const的情况下,尽量定义为const 。

3、引用作为返回值

要以引用返回函数值,则函数定义时要按以下格式:

类型标识符 &函数名(形参列表及类型说明)

{函数体}

说明:

(1)以引用返回函数值,定义函数时需要在函数名前加&

(2)用引用

返回一个函数值的最大好处是,在内存中不产生被返回值的副本。

【例5】以下程序中定义了一个普通的函数fn1(它用返回值的方法返回函数值),另外一个函数fn2,它以引用的方法返回函数值。

#include <iostream.h>

float temp; //定义全局变量temp

float fn1(float r); //声明函数fn1

float &fn2(float r); //声明函数fn2

float fn1(float r) //定义函数fn1,它以返回值的方法返回函数值

{

 temp=(float)(r*r*3.14);

 return temp;

}

float &fn2(float r) //定义函数fn2,它以引用方式返回函数值

{

 temp=(float)(r*r*3.14);

 return temp;

}

void main() //主函数

{

 float a=fn1(10.0); //第1种情况,系统生成要返回值的副本(即临时变量)

 float &b=fn1(10.0); //第2种情况,可能会出错(不同 C++系统有不同规定)

 //不能从被调函数中返回一个临时变量或局部变量的引用

 float c=fn2(10.0); //第3种情况,系统不生成返回值的副本

 //可以从被调函数中返回一个全局变量的引用

 float &d=fn2(10.0); //第4种情况,系统不生成返回值的副本

 //可以从被调函数中返回一个全局变量的引用

 cout<<a<<c<<d;

}

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章