C++之引用2

1.用引用返回值

   函数返回值时,会生成一个副本,而用引用返回值时,不生成新的副本。

For example:

Float temp;

 Float fn1(float r)

{

 Temp=r*r*3.14;

Return temp;

}

Float fn2(float r)

{

Temp=r*r*3.14;

Return temp;

}

上面的temp是全局变量。

下面有4种赋值方式:

(1)Float a=fn1(5.0);

(2)Float &b=fn1(5.0);

(3)Float c=fn2(5.0);

(4)Float &d=fn2(5.0);

 第(1)中方式是直接赋值,是fn1函数中的返回值的生成的副本赋值给a;

第(2)中方式是错误的,因为不能把一个临时的副本赋值给一个引用。这时可以这样用:

 float s=fn1(5.0);float &b=s; 

(3)方式是fn1函数中的temp直接赋值给c,并没有先生成一个副本,然后再赋值给c。

(4)方式是fn2函数中的temp直接赋值给引用d,即是d就是temp的引用。但是这种方式存在一定风险,如果,temp是临时变量,这种做法就是错误的。

2.引用作为左值是很危险的,

  如fn2(5.0)=12.4;

3.传递指针和引用更大的目的是效率。当一个数据类型很大时,因为传值要复制副本,所以不可取。所以以后写算法时,尽量要用引用还有指针进行提升效率,较少运行时间。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值