函数返回引用类型的值

这几天在看《NS与网络模拟》这本书,对于我这样的菜鸟来说,看其中的程序遇到了不少的问题。这几天经常看到类似u_int32_t&srcid(){return(srcid_);}和int&seqno(){return(seqno_);}这样的语句,今天上午自己在vc里面对这样的句子测试了几遍,终于大概搞明白其中的原理了。原来这就是返回类型为引用的函数。我的测试程序如下:

#include <iostream>
class example
{
public:
int a;
int b;
int getoutA(){return (a+b);}
int &getoutB(){return (a);}
};
int main()
{
example AA;
AA.a=5;
AA.b=2;
std::cout << AA.a << std::endl;
example & BB=AA;
std::cout << BB.b << std::endl;
std::cout << AA.getoutA() << std::endl;
std::cout << AA.getoutB() << std::endl;
return 0;
}

最终输出结果为:

5

2

7

2

getoutB()返回的就是成员变量a的引用,如果getoutA()也改为返回引用类型:int &getoutA(){return (a+b);}那就会出错,因为rerun返回的是表达式a+b的值,该值存放于系统临时变量中,getoutA()执行完就释放了,&必须要返回确切内存地址的值才行(不知道这样说对不对)。

采样返回类型为引用的函数有很多好处,例如可以提高执行效率,还有安全类型检查等功能。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值