1、第三章习题答案一 、 填 空 题1类的成员包括两类成员,一类是代表对象属性的_数据成员_,另一类是实现对象行为的_成员函数_。2. C+对类的成员提供了_ public(公有类型) 、private(私有类型)和protected(保护类型) 三种不同的访问权限。3. C+中,_main_是主函数名,一个项目中_一个_名为 main 的函数,它表示程序执行的_开始点_。4. 在 C+中,构造函数的名字必须与_类名_相同,它可以有任意类型的_参数_,但没有_返回值类型_,也不能指定为_void_类型。定义对象时,系统会_自动_调用构造函数。5. 在 C+中,析构函数的名字必须由_ _和_类名_组
2、成,它没有_参数_,也没有_返回值_,也不能_被重载_。6. 在 C+中,函数的参数传递有_三种 _方式,即_值传递_、_指针传递_和_引用传递_。7. 对象数组是指每一数组元素都是_对象 _的数组。对象数组的元素不仅具有_数据成员_,而且具有_成员函数_。二 、 判 断 正 误1. 若没有明确的声明,则类中的成员的访问权限为 protected。 (X )2. 类中的任何成员函数都可以被定义为内联函数。 (X )3. 构造函数必须定义,不能默认。 (X)4. 在类中定义的函数默认为内联函数。 ()5. 声明为 protected 的类成员,只能被它所在类及从该类派生的子类的成员函数及友元函数
3、访问。 ( )6在声明类的同时,不能直接定义对象。 (X)7对象数组的元素是对象,但只能有数据成员。 (X)8C+ 语言中,函数的参数和返回值的传递方式只有值传递和引用传递两种。 (X)9拷贝构造函数的形参只能是本类对象的引用。 ()三 、 选 择 题1下面关于重载函数说法中正确的是( D ) 。A.重载函数必须具有不同的返回类型 B.重载函数的参数个数必须不同C.重载函数参数名称必须不同 D.重载函数必须有不同的参数列表2关于参数默认值描述正确的是( D ) 。A.要设置参数的默认值,就必须全部设置B.参数设置默认值后,调用函数时不能再对参数赋值C.参数默认值的设置,可以任意设置D.参数默认
4、值的设置,只能在函数声明时设置。3关于构造函数,下面说法正确的是( A ) 。A.构造函数没有返回类型B.构造函数的名字可以与类名不同C.构造函数不能重载D.构造函数只能在类外定义4 ( D )不是构造函数的特征。A.构造函数的函数名与类名相同B.构造函数可以重载C.构造函数可以设置缺省参数D.构造函数必须指定类型说明5关于析构函数,下面说法正确的是( B ) 。A.析构函数可以重载B.析构函数不能指定返回类型C.析构函数的名字与类名相同D.析构函数可以定义在私有部分6通常的拷贝构造函数的参数是( C )A.某个对象名B.某个对象的成员名C.某个对象的引用名D.某个对象的指针名7关于成员函数特
5、征,下属描述中, ( A )是错误的。A.成员函数一定是内联函数B.成员函数可以重载C.成员函数可以设置参数的缺省值D.成员函数可以是静态的8Student 是已定义的一个类,那么执行语句“Student stu1,stu2(3),*stu3,*stu4;”,调用了( B )次构造函数。A.1 B.2 C.3 D.49 “void point(Student ”是某类中的一个成员函数声明,Student public:Date(int y,int m,int d);void Print(Time t);class Timeprivate:int hour,minute,second;publi
6、c:Time(int h,int m,int s);friend void Date:Print(Time t);应在 class Date 语句前面加入语句 class Time;表示向前引用。因为友元函数 Print使用了 Time 类的对象作为参数,而类 Time 要在类 Date 后面才进行声明。2#include using namespace std;class Baseprotected:int x;public:Base(int m) x=m; ;void mian( )Base a(10);coutusing namespace std;class Cube public:C
7、ube(int=10,int,int=10); int volume();private:int height;int width;int length; ;Cube:Cube(int h,int w,int len) height=h;width=w;length=len; int Cube:volume() return(height * width * length); Cube(int=10,int,int=10); 语句有错。因为对一个函数的参数设置默认值时,所有给默认值的参数都必须在不给默认值的参数的右面。改错方法有两种(任选一种):1)Cube(int=10,int,int=10
8、);改为 Cube(int,int,int=10);;2)Cube(int=10,int,int=10); 改为Cube(int=10,int=10,int=10);五、写出下面程序的运行结果1. #include “stdafx.h“#include “iostream“using namespace std;class Pointint x,y;public:Point(int xx=0,int yy=0)x=xx;y=yy;Point(Point y=p.y;coutxy;coutn;switch(n)case 1:int i;Employees x;couti;coutx.no x.name x.sex x.age x.positions x.professionalTitles x.jobs x.remuneration ;Employees_Object.Insert_seq(i,x);cout“插入后的情况:“endl;Employees_Object.Print_seq();break;case 2: