面向对象程序设计第二章课后答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1.什么是命名空间,如何访问命名空间的成员?【解答】为了解决不同文件中同名变量的问题,C++标准中引入命名空间的概念。命名空间(namespace)是一种特殊的作用域,命名空间可以由程序员自己来创建,可以将不同的标识符集合在一个命名作用域内,这些标识符可以类、对象、函数、变量、结构体、模板以及其他命名空间等。在作用域范围内使用命名空间就可以访问命名空间定义的标识符。有3种访问方法:(1)直接指定标识符,访问方式为:命名空间标识符名∷成员名。(2)使用usingnamespace命令(3)使用using关键词声明2.什么是内联函数,它有什么特点?哪些函数不能定义为内联函数?【解答】用inline关键字声明或定义的函数称为内联函数。C++中对于功能简单、规模小、使用频繁的函数,可以将其设置为内联函数。内联函数(inlinefunction)的定义和普通函数相同,但C++对它们的处理方式不一样。在编译时,C++将用内联函数程序代码替换对它每次的调用。这样,内联函数没有函数调用的开销,即节省参数传递、控制转移的开销,从而提高了程序运行时的效率。但是,由于每次调用内联函数时,需要将这个内联函数的所有代码复制到调用函数中,所以会增加程序的代码量,占用更多的存储空间,增大了系统空间方面的开销。因此,内联函数是一种空间换时间的方案。函数体内有循环语句和switch语句,递归调用的函数不能定义为内联函数。3.什么是函数重载?在函数调用时,C++是如何匹配重载函数的?【解答】函数重载是指两个或两个以上的函数具有相同的函数名,但参数类型不一致或参数个数不同。编译时编译器将根据实参和形参的类型及个数进行相应地匹配,自动确定调用哪一个函数。使得重载的函数虽然函数名相同,但功能却不完全相同。在函数调用时,C++是匹配重载函数规则如下:首先寻找一个精确匹配,如果能找到,调用该函数;其次进行提升匹配,通过内部类型转换(窄类型到宽类型的转换)寻求一个匹配,如char到int、short到int等,如果能找到,调用该函数;最后通过强制类型转换寻求一个匹配,如果能找到,调用该函数。4.设置函数参数的默认值有何作用?【解答】C++中允许函数提供默认参数,也就是允许在函数的声明或定义时给一个或多个参数指定默认值。在调用具有默认参数的函数时,如果没有提供实际参数,C++将自动把默认参数作为相应参数的值5.什么叫引用,使用引用时需要注意哪些问题?【解答】引用是一个变量的别名。使用引用时,必须在定义时进行初始化,不能在定义完后再赋值。6.new运算符的作用是什么?delete运算符的作用是什么?【解答】在C++程序中,new是动态分配内存的运算符,自动计算需要分配的空间。delete是撤销动态申请的内存运算符。delete与new通常配对使用,建立堆对象时使用new运算符、删除堆对象时delete使用运算符。7、#includestdafx.h#includeiostreamusingnamespacestd;intMin(intx1,intx2);intMin(intx1,intx2,intx3);intMin(intx1,intx2,intx3,intx4);int_tmain(intargc,_TCHAR*argv[]){intx1,x2,x3,x4;coutinputx1,x2,x3,x4endl;cinx1x2x3x4;coutMin(x1,x2)endl;coutMin(x2,x3,x4)endl;coutMin(x1,x2,x3,x4)endl;getchar();return0;}intMin(intx1,intx2){return(x1x2?x1:x2);}intMin(intx1,intx2,intx3){inty;y=x1x2?x1:x2;return(yx3?y:x3);}intMin(intx1,intx2,intx3,intx4){inty1,y2;y1=x1x2?x1:x2;y2=x3x4?x3:x4;return(y1y2?y1:y2);}8、#include“stdafx.h”#includeiostream#includecmathusingnamespacestd;#definepi3.141592doubleArea(doubleR);doubleArea(doublea,doubleb);doublePerim(doubleR);doublePerim(doublea,doubleb);int_tmain(intargc,_TCHAR*argv[]){doubler;doublem;doublen;cout请输入圆的半径endl;cinr;cout圆的面积为:Area(r)圆的周长为:Perim(r)endl;cout请输入长方形的边长endl;cinmn;cout长方形的面积为:Area(m,n)长方形的周长为:Perim(m,n)endl;cout请输入正方形的边长endl;cinm;cout正方形的面积为:Area(m,m)正方形的周长为:Perim(m,m)endl;return0;}doubleArea(doubleR){doubles;s=pi*R*R;returns;}doubleArea(doublea,doubleb){doubles;s=a*b;returns;}doublePerim(doubleR){doublep;p=2*pi*R;returnp;}doublePerim(doublea,doubleb){doublep;p=2*(a+b);returnp;}9、#includefstream#includeiostreamusingnamespacestd;int_tmain(intargc,_TCHAR*argv[]){ofstreamoutData(D:\\data.txt);ifstreaminData;intx,i,b[10];for(i=0;i10;i++){cinx;outDatax;}outData.close();inData.open(D:\\data.txt);//while(!inData.eof())for(intj=0;j10;j++){inDatab[j];}inData.close();ints=0;for(intm=0;m10;m++){s+=b[m];coutb[m];}coutendl;cout数据总和为:sendl;getchar();return0;}10、(1)#includefstream#includeiostreamusingnamespacestd;int_tmain(intargc,_TCHAR*argv[]){ofstreamoutData(C:\\student.dat);//charname[8],id[10],pro[8];intmath,english;for(inti=0;i3;i++){cout输入学生姓名:;cinname;cout输入学生学号:;cinid;cout输入学生专业:;cinpro;cout输入高数成绩:;cinmath;cout输入英语成绩:;cinenglish;outDatanameidpromathenglishendl;}outData.close();return0;}(2)#includefstream#includeiostreamusingnamespacestd;int_tmain(intargc,_TCHAR*argv[]){ifstreaminData(C:\\student.dat);charname1[8],id1[10],pro1[8];intmath1,english1;for(inti=0;i8;i++){inDataname1id1pro1math1english1;cout姓名:name1endl;cout学号:id1endl;cout专业:pro1endl;cout高数成绩:math1endl;cout英语成绩:english1endl;}inData.close();getchar();return0;}

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功