1、10由于常对象不能被更新,因此( A)。A)通过常对象只能调用它的常成员函数 B)通过常对象只能调用静态成员函数C)常对象的成员都是常成员 D)通过常对象可以调用任何不改变对象值的成员函数二、填空题(本大题共5小题,每小题2分,共10分)不写解答过程,将正确的答案写在每小题的空格内。错填或不填均无分。1对于派生类的构造函数,在定义对象时构造函数的执行顺序为:先执行调用_基类_的构造函数,再执行调用子对象类的构造函数,最后执行派生类的构造函数体中的内容。2声明类模板应使用关键字(template )。3重载的关系运算符和逻辑运算符的返回类型应当是( 布尔型 )。4在面向对象方法中,类的实例称为(
2、 对象 )。5在类的对象被释放时,( 析构 )函数会被自动调用。三、完成程序填题(本大题共3个小题,每小题3分,共9分)下面程序都留有空白,请将程序补充完整, 1请完成下面的程序#include / 预处理命令using namespace std; / 使用标准命名空间std/ 测试静态成员类class Testprivate: int a; / 数据成员public: Test(int x = 0): 1 / 构造函数 void Show() cout a: a endl; / 显示数据成员之值;int main(void) / 主函数main(void) Test obj(168); /
3、 定义对象 obj.Show(); / 显示数据成员之值 return 0; / 返回值0,返回操作系统2请完成下面的程序 / 预处理命令 / 使用标准命名空间std/ 整数类class Integer / 数据成员 Integer(int x = 0) a = x; / 构造函数 2 () return a; / 类型转换函数(将类类型转换为整型)int main(void) / 主函数main(void) Integer a = 6; / 定义整数对象 cout / 显示整数 / 返回值0, 返回操作系统3请完成下面的程序/ 复数类class Complex double realPart
4、; / 实部 double imagePart; / 虚部 Complex(double real = 0, double image = 0): realPart(real), imagePart(image) / 构造函数 double GetRealPart() const return realPart; / 返回实部 double GetImagePart() const return imagePart; / 返回虚部 Complex operator+(const Complex &a) const / 重载加法运算符+ return Complex( 3 ); / 返回和 Co
5、mplex a(1, 2), b(2, 6), c; / 定义复数对象 c = a + b; / 复数加法运算a= a.GetRealPart() + a.GetImagePart() i / 显示ab= b.GetRealPart() b.GetImagePart() / 显示bc= c.GetRealPart() c.GetImagePart() / 显示c四、程序分析题(本大题共4小题,每小题5分,共20分)给出下面各程序的输出结果。1阅读下面程序,写出输出结果。class A virtual void Show() const cout Show();b; B *q; q = & q-
6、 / 返回值0,返回操作系统上面程序的输出结果为:2阅读下面程序,写出输出结果。template void Show(ElemType a, int n) for (int i = 0; i n; i+) ai ; int a = 1, 6, 9; Show(a, sizeof(a) / sizeof(int); Show(a, 2); / 返回值0, 返回操作系统3阅读下面程序,写出输出结果。 / 预处理命令 / 使用标准命名空间stdclass MyClass MyClass() count+; MyClass() count-; static int GetCount() return
7、count; static int count;int MyClass:count = 0; / 初始化静态数据成员 MyClass obj1; MyClass:GetCount() MyClass obj2; MyClass obj3; obj1.GetCount() MyClass *p = new MyClass; delete p; / 返回值0, 返回操作系统4阅读下面程序,写出输出结果。 A() cout A() A() cout A() virtual void f() cout A:f() B() cout B() B() cout B() void f() cout B: i
8、nt main(void) B obj; A *p = &obj;f();五、程序改错题(本大题共3小题,每小题5分,共15分)指出下面程序中的错误的行,说明错误原因,并加以改正。1下面程序中类的定义中有一处错误,请指出出错的行,说明错误原因,并加以改正。 / 预处理命令 /1 / 使用标准命名空间std /2 /3class Test /4 /5 /6 void Test() cout 构造函数 /7 Test() cout 析造函数 /8 /9 /10int main(void) /11 /12 Test obj; /13 /14 / 返回值0,返回操作系统 /15 /162下面程序中有错
9、误,请指出出错的行,说明错误原因,并加以改正。 /1 /2class MyClass /4 MyClass(int x = 0): a(x) /7 /8 void Show() /9 /10 /11 /12 /13 /15 int main(void) /16 /17 const MyClass oTest(18); /18 oTest.Show(); /19 /20 /21 /223下面程序中类的定义中有一处错误,请指出出错的行,说明错误原因,并加以改正。class A /4 virtual void Show() = 0; /7public A /10 /11 B(int a = 0):
10、x(a) /13 void Show() /15 /16 cout x realPart + a.realPart, this-imagePart + a.imagePartClass AClass B1 6 9 1 61234A()B()f()B()A()第7行“void Test() cout ”有错,构造函数没有返回值类型,应改为,应改为“Test() cout ”。第9行,第18行与第19行有错,常对象只能调用常成员函数,可将第18行的“const MyClass oTest(18);”改为“MyClass oTest(18);”;或将第9行的“void Show()”改为“void
11、Show() const”。第26行“A obj(10)”有错,Cbase是抽象类,不能直接生成对象,可改为“B obj(10)”。参考程序: / 预处理命令 / 使用标准命名空间stdconst double PI = 3.1415926; / 定义常量PIclass Shape Shape() / 构造函数 virtual Shape() / 析构函数 virtual ShowArea() = 0; / 显示面积 static double totalArea; / 总面积 static void ShowTotalArea() cout 总面积: totalArea class Circ
12、le: public Shape double radius; / 半径 Circle(double r): radius(r) totalArea += PI * r * r; / 构造函数 Circle() / 析构函数 virtual ShowArea() cout 圆面积: PI * radius * radius ; / 显示面积class Rectangle: double length; / 长 double width; / 宽 Rectangle(double l, double w): length(l), width(w) totalArea += l * w; / 构造
13、函数 Rectangle() / 析构函数矩形面积: length * width class Square: / 边长 Square(double l): length(l) totalArea += l * l; / 构造函数 Square() / 析构函数正方形面积: length * length double Shape:totalArea = 0; / 初始化totalAreaint main(void) Circle c(1); / 定义圆对象 c.ShowArea(); / 显示面积 Rectangle r(1, 2); / 定义矩形对象 r.ShowArea(); Square z(3); / 定义正方形对象 z.ShowArea(); Sh
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2