- 2
- 0
- 约1.78万字
- 约 34页
- 2020-11-13 发布于江苏
- 举报
1.求下面函数返回值(微软)
int func(x) { ??? int countx = 0; ??? while(x) ??? { ????????? countx ++; ????????? x = x(x-1); ???? } ??? return countx; }
假定x = 9999。 答案:8
思绪:将x转化为2进制,看含有1个数。
2. 什么是“引用”?申明和使用“引用”要注意哪些问题?
答:引用就是某个目标变量“别名”(alias),对应用操作和对变量直接操作效果完全相同。申明一个引用时候,切记要对其进行初始化。引用申明完成后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其它变量名别名。申明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名一部分名,它本身不是一个数据类型,所以引用本身不占存放单元,系统也不给引用分配存放单元。不能建立数组引用。
3. 将“引用”作为函数参数有哪些特点?
(1)传输引用给函数和传输指针效果是一样。这时,被调函数形参就成为原来主调函数中实参变量或对象一部分名来使用,所以在被调函数中对形参变量操作就是对其对应目标对象(在主调函数中)操作。
(2)使用引用传输函数参数,在内存中并没有产生实参副本,它是直接对实参操作;而使用通常变量传输函数参数,当发生函数调用时,需要给形参分配存放单元,形参变量是实参变量副本;假如传输是对象,还将调用拷贝结构函数。所以,当参数传输数据较大时,用引用比用通常变量传输参数效率和所占空间全部好。
(3)使用指针作为函数参数即使也能达成和使用引用效果,不过,在被调函数中一样要给形参分配存放单元,且需要反复使用*指针变量名形式进行运算,这很轻易产生错误且程序阅读性较差;其次,在主调函数调用点处,必需用变量地址作为实参。而引用更轻易使用,更清楚。
4. 在什么时候需要使用“常引用”?
假如既要利用引用提升程序效率,又要保护传输给函数数据不在函数中被改变,就应使用常引用。常引用申明方法:const 类型标识符 引用名=目标变量名;
例1
int a ;const int ra=a;ra=1; //错误a=1; //正确
例2
string foo( );void bar(string s);
那么下面表示式将是非法:
bar(foo( ));bar(hello world);
原因在于foo( )和hello world串全部会产生一个临时对象,而在C++中,这些临时对象全部是const类型。所以上面表示式就是试图将一个const类型对象转换为非const类型,这是非法。
引用型参数应该在能被定义为const情况下,尽可能定义为const 。
5. 将“引用”作为函数返回值类型格式、好处和需要遵守规则?
格式:类型标识符 函数名(形参列表及类型说明){ //函数体 }
好处:在内存中不产生被返回值副本;(注意:正是因为这点原因,所以返回一个局部变量引用是不可取。因为伴随该局部变量生存期结束,对应引用也会失效,产生runtime error!
注意事项:
(1)不能返回局部变量引用。这条能够参考Effective C++[1]Item 31。关键原因是局部变量会在函数返回后被销毁,所以被返回引用就成为了无所指引用,程序会进入未知状态。
(2)不能返回函数内部new分配内存引用。这条能够参考Effective C++[1]Item 31。即使不存在局部变量被动销毁问题,可对于这种情况(返回函数内部new分配内存引用),又面临其它尴尬局面。比如,被函数返回引用只是作为一个临时变量出现,而没有被给予一个实际变量,那么这个引用所指向空间(由new分配)就无法释放,造成memory leak。
(3)能够返回类组员引用,但最好是const。这条标准能够参考Effective C++[1]Item 30。关键原因是当对象属性是和某种业务规则(business rule)相关联时候,其赋值常常和一些其它属性或对象状态相关,所以有必需将赋值操作封装在一个业务规则当中。假如其它对象能够取得该属性很量引用(或指针),那么对该属性单纯赋值就会破坏业务规则完整性。
(4)流操作符重载返回值申明为“引用”作用:
流操作符和,这两个操作符常常期望被连续使用,比如:cout hello endl; 所以这两个操作符返回值应该是一个仍然支持这两个操作符流引用。可选其它方案包含:返回一个流对象和返回一个流对象指针。不过对于返回一个流对象,程序必需重新(拷贝)结构一个新流对象,也就是说,连续两个操作符实际上是针对不一样对象!这无法让人接收。对于返回一个流指针则不能连续使用操作符。所以,返回一个流对象引用是惟一选择。这个
您可能关注的文档
- 2021年1月《现代管理专题》电大本期末复习资料.doc
- 2021年1月小学教师资格证面试试讲题目要求真题.doc
- 2021年1月自考企业管理概论重点资料1-9章.doc
- 2021年1月自考房地产试题及答案.doc
- 2021年1月自考模具数控加工试题.doc
- 2021年1月自考金融法和答案.doc
- 2021年1月雅思真题机经全科.doc
- 2021年27054江苏自学考试工程数学试卷及答案.doc
- 2021年2型糖尿病的药物治疗,执业药师继续教育参考答案及试题.doc
- 2021年3月全国计算机等级考试二级C++笔试真题及答案.doc
- 牧原食品养殖工程师面试攻略(20道高频问题)【精选】.pdf
- 自动扶梯和自动人行道数据采集智能分析预警子系统功能及要求、边缘层要求、编程接口、预警及报警信息.pdf
- 事前绩效评估报告、运行监控、评价、成本预算绩效分析报告、第三方机构绩效评价综合质量评分表.pdf
- 银行间外汇市场交易确认相关数据元定义.pdf
- 空调移交协议模板.pdf
- 特种设备压力管道风险管控责任清单.pdf
- 社区卫生服务中心工作制度及服务规范.pdf
- 高频精选:医院药学面试题目及答案.pdf
- 【人教版 九上】初中语文古诗文理解性默写强化训练(含答案+易错点解析).docx
- 【初中语文】《西游记》精读与跳读全解(考点梳理+真题演练).docx
最近下载
- 2026开封市第三届职业技能大赛汽车技术(世赛选拔)项目技术工作文件.pdf VIP
- 站用交直流电源系统技术规范第3部分:直流电源系统.pdf VIP
- 2024年初级会计职称《经济法基础》精讲课件.pptx VIP
- 2025年湖南机电职业技术学院单招职业技能测试题库及参考答案.docx VIP
- 2025年浙江机电职业技术学院单招(语文)测试试卷.docx VIP
- 泰国和中国合同模板(3篇).docx VIP
- 2025年湖南机电职业技术学院单招职业技能测试题库参考答案.docx VIP
- (2026春新版)人教版二年级数学下册《第三单元 万以内数的认识》教案.docx VIP
- 四年级小学下书法设计教案.doc VIP
- 烟气余热利用的热管式换热器设计(毕业论文).docx VIP
原创力文档

文档评论(0)