面向对象程序设计第二章课后答案说课讲解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象程序设计第二章课后答案
1.什么是命名空间,如何访问命名空间的成员?
【解答】为了解决不同文件中同名变量的问题,C++标准中引入命名空间的概念。命名空间(namespace)是一种特殊的作用域,命名空间可以由程序员自己来创建,可以将不同的标识符集合在一个命名作用域内,这些标识符可以类、对象、函数、变量、结构体、模板以及其他命名空间等。
在作用域范围内使用命名空间就可以访问命名空间定义的标识符。有3种访问方法:
(1)直接指定标识符,访问方式为:命名空间标识符名∷成员名。
(2)使用using namespace命令
(3)使用using关键词声明
2.什么是内联函数,它有什么特点?哪些函数不能定义为内联函数?
【解答】用inline关键字声明或定义的函数称为内联函数。C++中对于功能简单、规模小、使用频繁的函数,可以将其设置为内联函数。
内联函数(inline function)的定义和普通函数相同,但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、
#include"stdafx.h"
#include"iostream"
using namespace std;
int Min(int x1,int x2);
int Min(int x1,int x2,int x3);
int Min(int x1,int x2,int x3,int x4);
int _tmain(int argc, _TCHAR* argv[])
{
int x1,x2,x3,x4;
cout<<"input x1,x2,x3,x4"< cin>>x1>>x2>>x3>>x4; cout< cout< cout< getchar(); return 0; } int Min(int x1,int x2) { return (x1 } int Min(int x1,int x2,int x3) { int y; y=x1 return (y } int Min(int x1,int x2,int x3,int x4) { int y1,y2; y1=x1 y2=x3 return (y1 } 8、#include“stdafx.h” #include"iostream" #include using namespace std; #define pi 3.141592 double Area(double R); double Area(double a,double b); double Perim(double R); double Perim(double a,double b); int _tmain(int argc, _TCHAR* argv[]) { double r; double m; double n; cout<<"请输入圆的半径"< cin>>r; cout<<"圆的面积为:"< "< cout<<"请输入长方形的边长"< cin>>m>>n; cout<<"长方形的面积为:"< cout<<"请输入正方形的边长"< cin>>m; cout<<"正方形的面积为:"< return 0; } double Area(double R) { double s; s=pi*R*R; return s; } double Area(double a,double b) { double s; s=a*b; return s; } double Perim(double R) { double p; p=2*pi*R; return p; } double Perim(double a,double b) { double p;