C笔试题目:将"引用"作为函数返回值类型的格式、好处和需要.doc.pdf

上传人:tbuqq 文档编号:5615849 上传时间:2020-07-02 格式:PDF 页数:3 大小:61.39KB
返回 下载 相关 举报
C笔试题目:将"引用"作为函数返回值类型的格式、好处和需要.doc.pdf_第1页
第1页 / 共3页
C笔试题目:将"引用"作为函数返回值类型的格式、好处和需要.doc.pdf_第2页
第2页 / 共3页
C笔试题目:将"引用"作为函数返回值类型的格式、好处和需要.doc.pdf_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《C笔试题目:将"引用"作为函数返回值类型的格式、好处和需要.doc.pdf》由会员分享,可在线阅读,更多相关《C笔试题目:将"引用"作为函数返回值类型的格式、好处和需要.doc.pdf(3页珍藏版)》请在三一文库上搜索。

1、C+笔试题目:将”引用”作为函数返 回值类型的格式、好处和需要 格式:类型标识符函数名 (形参列表及类型说明) /函数 体 好处:在内存中不产生被返回值的副本;(注意:正是 因 为这点原因,所以返回一个局部变量的引用是不可取的因为随 着该局部变量生存期的结束,相应的引用也会失效产生 runtimeerror! 注意事项: (1)不能返回局部变量的引用。这条可以参照 EffectiveC+l的Item31。主要原因是局部变量会在函 返回后被销毁,因此被返回的引用就成为了”无所指”的引 用,程序会进入未知状态。 (2 )不能返回函数内部ne w分配的内存的引用。 这条 可 以参照Effect i

2、veC+l的I tem31。虽然不存在局部变量 的被动销毁问题,可对于这种情况(返回函数内部new分 配内 存的引用),又面临其它尴尬局面。例如,被函数返回的引用 只是作为一个临时变量出现,而没有被赋予一个实际的变量, 那么这个引用所指向的空间(由n ew分配)就无法释放,造 成memoryl eak。 (3)可以返回类成员的引用, 但最好是const。这条原 则 可以参照Eff ect iveC+l的I tem30。主要原因是当对 象的属性是与某种业务规则(busines sru le)相关联的时候, 其赋值常常与某些其它属性或者对象的状态有关,因此有必 要将赋值操作封装在一个业务规则当中。

3、 如果其它对象可以获得该属性的非常量引用(或指 针) ,那 么对该属性的单纯赋值就会破坏业务规则的完整性。 (4)流操作符重载返回值申明为“引用”的作用: 流操作符,这两个操作符常常希望被连续使用,例如: cout对于返回一个流指针则不能连续使用这个操作符象流操 作符一样,是可以连续使用的, 例如:x=j=10;或者(x=10)=100 : 赋值操作符的返回值必须是一个左值,以便可以被继续赋值。 因此引用成了这个操作符的惟一返回值选择。 例3 include in tp ut (intn); in tvals 10: i nter ror=-l; voi dmain() put (0)=10

4、:/ 以put (0)函数值作为左值,等价于V als0二10 ; put (9) =20;/以put (9)函数值作为左值,等价于va ls9=20; co ut intput (in t n) if(n=0 nelsecout (5)在另外的一些操作符中,却千万不能返回引用:+_ */ 四则运算符。它们不能返回引用,Effe ctiveC +1 的Item2 3详细的讨论了这个问题。主要原因是这四个操作符没有 sideeffe ct,因此,它们必须构造一个对象作为返回值,可选 的方案包括:返回一个对象、返回一个局部变量的引用,返回 一个ne w分配的对象的引用、返回一个静态对象引用。根据 前面提到的引用作为返回值的三个规则,第2、3两个方案都 被否决了。静态对象的引用又因为( a+b)=(c+d )会永远为 true而导致错误。所以可选的只剩下返回一个对象了。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1