1、C+面向对象程序设计复习练习试题带答案2C+面向对象程序设计模拟试题四一、单项选择题(本大题共10小题,每小题2分,共20分)1下列关于C+函数的说明中,正确的是( )。A)内联函数就是定义在另一个函数体内部的函数 B)函数体的最后一条语句必须是return语句C)调用一个函数之前,如果还没有定义这个函数,必须先声明其原型D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式2假定MyCIass为一个类,那么下列的函数说明中,( )为该类的无参构造函数。A)void MyClass(); B)MyClass(int n); C)MyClass( ); D)MyClass( );3下列
2、叙述中,错误的是( )。A)派生类可以使用private派生 B)对基类成员的访问必须是无二义性的C)基类成员的访问能力在派生类中维持不变 D)赋值兼容规则也适用于多继承的组合4当一个类的某个函数被说明为virtual时,该函数在该类及其所有派生类中( ) 。A. 都是虚函数 B. 只有被重新说明为vittual时才是虚函数 C. 都不是虚函数 D. 上面都不正确 5派生类的构造函数的成员初始化表中,不能包含( )。A)基类的构造函数B)派生类中子对象的初始化C)基类中子对象的初始化D)派生类中一般数据成员的初始化6下列是重载加法运算符的函数原型声明,其中错误的是( )。A)MyClass o
3、perator+(double,double); B)MyClass operator+(double,MyClass);C)MyClass operator+(MyClass,double); D)MyClass operator+(MyClass,MyClass);7派生类中的成员不能直接访问基类中的( )成员。A)public B)private C)virtual D)protected8实现运行时的多态性要使用( )。A)重载函数 B)析构函数 C)构造函数 D)虚函数9如果在类MyClass的外面使用函数调用MyClass:f();则函数f()是类MyClass的( )。 A. 静
4、态成员函数 B. 非静态成员函数 C. 友元函数 D. 前面都不正确10由于常对象不能被更新,因此( )。A)通过常对象只能调用它的常成员函数 B)通过常对象只能调用静态成员函数C)常对象的成员都是常成员 D)通过常对象可以调用任何不改变对象值的成员函数二、填空题(本大题共5小题,每小题2分,共10分1对于派生类的构造函数,在定义对象时构造函数的执行顺序为:先执行调用_的构造函数,再执行调用子对象类的构造函数,最后执行派生类的构造函数体中的内容。2声明类模板应使用关键字( )。3重载的关系运算符和逻辑运算符的返回类型应当是( )。4在面向对象方法中,类的实例称为( )。5在类的对象被释放时,(
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); / 定义对象 obj.Show(); / 显示数据成员之值 return 0; /
6、返回值0,返回操作系统2请完成下面的程序#include / 预处理命令using namespace std; / 使用标准命名空间std/ 整数类class Integerprivate: int a; / 数据成员public: Integer(int x = 0) a = x; / 构造函数 2 () return a; / 类型转换函数(将类类型转换为整型);int main(void) / 主函数main(void) Integer a = 6; / 定义整数对象 cout a endl; / 显示整数 return 0; / 返回值0, 返回操作系统3请完成下面的程序#inclu
7、de / 预处理命令using namespace std; / 使用标准命名空间std/ 复数类class Complexprivate: double realPart; / 实部 double imagePart; / 虚部public: Complex(double real = 0, double image = 0): realPart(real), imagePart(image) / 构造函数 double GetRealPart() const return realPart; / 返回实部 double GetImagePart() const return imagePa
8、rt; / 返回虚部 Complex operator+(const Complex &a) const / 重载加法运算符+ return Complex( 3 ); / 返回和 ;int main(void) / 主函数main(void) Complex a(1, 2), b(2, 6), c; / 定义复数对象 c = a + b; / 复数加法运算 cout a= a.GetRealPart() + a.GetImagePart() i endl; / 显示a cout b= b.GetRealPart() + b.GetImagePart() i endl; / 显示b cout
9、c= c.GetRealPart() + c.GetImagePart() i endl; / 显示c return 0; / 返回值0, 返回操作系统四、程序分析题(本大题共4小题,每小题5分,共20分)给出下面各程序的输出结果。1阅读下面程序,写出输出结果。#include / 预处理命令using namespace std; / 使用标准命名空间stdclass Apublic: virtual void Show() const cout Class A endl; ;class B: public Apublic: void Show() const cout Class B Sh
10、ow(); p = &b; p-Show(); B *q; q = &b; q-Show(); return 0; / 返回值0,返回操作系统上面程序的输出结果为:2阅读下面程序,写出输出结果。#include / 预处理命令using namespace std; / 使用标准命名空间stdtemplate void Show(ElemType a, int n) for (int i = 0; i n; i+) cout ai ; int main(void) int a = 1, 6, 9; Show(a, sizeof(a) / sizeof(int); Show(a, 2); cou
11、t endl; return 0; / 返回值0, 返回操作系统上面程序的输出结果为:3阅读下面程序,写出输出结果。#include / 预处理命令using namespace std; / 使用标准命名空间stdclass MyClasspublic: MyClass() count+; MyClass() count-; static int GetCount() return count; private: static int count;int MyClass:count = 0; / 初始化静态数据成员int main(void) MyClass obj1; cout MyCla
12、ss:GetCount() endl; MyClass obj2; cout MyClass:GetCount() endl; MyClass obj3; cout obj1.GetCount() endl; MyClass *p = new MyClass; cout MyClass:GetCount() endl; delete p; cout MyClass:GetCount() endl; return 0; / 返回值0, 返回操作系统上面程序的输出结果为:4阅读下面程序,写出输出结果。#include / 预处理命令using namespace std; / 使用标准命名空间st
13、dclass Apublic: A() cout A() endl; A() cout A() endl; virtual void f() cout A:f() endl; ;class B: public Apublic: B() cout B() endl; B() cout B() endl; void f() cout B:f() f(); return 0; / 返回值0, 返回操作系统上面程序的输出结果为:六、编程题(本大题26分)编写程序,定义抽象基类Shape(形状),由它派生出3个派生类: Circle(圆形)、Rectangle(矩形)和Square (正方形),用函数函
14、数ShowArea()分别显示各种图形的面积,最后还要显示所有图形的总面积。C+面向对象程序设计模拟试题四参考答案一、单项选择题1C 2C 3C 4A 5C6A 7B 8D 9A 10A二、填空题1参考答案:基类2参考答案:template3参考答案:bool或布尔型4参考答案:对象5参考答案:析构函数 三、完成程序填题(本大题共3个小题,每小题3分,共9分)下面程序都留有空白,请将程序补充完整, 1参考答案:1a(x)2参考答案:2operator int3参考答案:3 realPart + a.realPart, imagePart + a.imagePart或this-realPart
15、+ a.realPart, this-imagePart + a.imagePart四、程序分析题(本大题共4小题,每小题5分,共20分)给出下面各程序的输出结果。1参考答案:Class AClass BClass AClass BClass B2参考答案:1 6 9 1 63参考答案:123434参考答案:A()B()B:f()B()A()六、编程题(本大题26分)参考程序:#include / 预处理命令using namespace std; / 使用标准命名空间stdconst double PI = 3.1415926; / 定义常量PIclass Shapepublic: Shap
16、e() / 构造函数 virtual Shape() / 析构函数 virtual ShowArea() = 0; / 显示面积 static double totalArea; / 总面积 static void ShowTotalArea() cout 总面积: totalArea endl; ;class Circle: public Shapeprivate: double radius; / 半径public: Circle(double r): radius(r) totalArea += PI * r * r; / 构造函数 Circle() / 析构函数 virtual Sho
17、wArea() cout 圆面积: PI * radius * radius endl; ; / 显示面积;class Rectangle: public Shapeprivate: double length; / 长 double width; / 宽public: Rectangle(double l, double w): length(l), width(w) totalArea += l * w; / 构造函数 Rectangle() / 析构函数 virtual ShowArea() cout 矩形面积: length * width endl; ; / 显示面积;class S
18、quare: public Shapeprivate: double length; / 边长public: Square(double l): length(l) totalArea += l * l; / 构造函数 Square() / 析构函数 virtual ShowArea() cout 正方形面积: length * length endl; ; / 显示面积;double Shape:totalArea = 0; / 初始化totalAreaint main(void) Circle c(1); / 定义圆对象 c.ShowArea(); / 显示面积 Rectangle r(1
19、, 2); / 定义矩形对象 r.ShowArea(); / 显示面积 Square z(3); / 定义正方形对象 z.ShowArea(); / 显示面积 Shape:ShowTotalArea(); / 显示总面积 return 0; / 返回值0, 返回操作系统C+面向对象程序设计模拟试题三一、单项选择题(本大题共10小题,每小题2分,共20分)1下面有关重载函数的描述中,正确的是( )。A)重载函数必须具有不同的返回值类型 B)重载函数形参个数必须不同C)重载函数必须具有不同的形参表 D)重载函数名可以不同2假定MyCIass为一个类,那么下列的函数说明中,( )为该类的析构函数。A
20、)voidMyClass(); B)MyClass(int n); C)MyClass( ); D)MyClass( );3( )是以一种完全通用的方法来设计函数或类而不必预先说明将被使用的每个对象的类型。 A)模板 B)类 C)对象 D)函数4下面关于静态成员函数的途术中错语的是( )。A. 静态成员函数可以有返回值 B. this指针可以指向静态成员函数C. 静态成员函数可以具有指针参数 D. 静态成员函数可有具有返回值类型5定义类模板时要使用关键字( )。A. private B. public C. delete D. template6下列是重载乘法运算符的函数原型声明,其中错误的是
21、( )。A)MyClass operator*(double,double); B)MyClass operator*(double,MyClass);C)MyClass operator*(MyClass,double); D)MyClass operator*(MyClass,MyClass);7以下( )成员函数表示纯虚函数。A)virtual int fun(int) B)void fun(int)=0 C)virtual void fun()=0 D)virtual void fun(int)8关于纯虚函数,下列表述中正确的是( )。A)纯虚函数的声明总是以=0结束 B)含有纯虚函数
22、的类可以定义对象C)含有纯虚函数的类是抽象类 D)上面都是错误的 9( )解决二义性问题。A. 只能使用作用域分辨操作符 B. 只能使用虚基类C. 使用作用域分辨操作符或虚基类 D. 上面都不能10实现编译时的多态性要使用( )。A)重载函数 B)析构函数 C)构造函数 D)虚函数二、填空题(本大题共5小题,每小题2分,共10分)1定义一个函数名为fun,返回值为int,没有参数的纯虚函数的声明是( )。2定义静态成员函数应使用关键字( )。3在C+中,如果类的名称是CTest,则此类的构造函数名称为( )。4在类的对象被创建时,( )函数会被自动调用。5类中数据成员和成员函数的默认访问级别为
23、( )。三、完成程序填题(本大题共3个小题,每小题3分,共9分) 1请完成下面的程序#include / 预处理命令using namespace std; / 使用标准命名空间std/ 测试静态成员类class Testprivate: 1 Test int count; / 对象数public: Test() count+; / 构造函数, 实现对对象进行计数 static void Show() cout 共有 count 个对象! endl; / 显示对象数;int Test:count = 0; / 初始化静态数据成员赋初值int main(void) / 主函数main(void)
24、 Test obj1, obj2, obj3; / 定义对象 Test:Show(); / 显示对象数 return 0; / 返回值0,返回操作系统2请完成下面的程序#include / 预处理命令using namespace std; / 使用标准命名空间std/ 整数类class Integerprivate: int a; / 数据成员public: Integer(int x = 0) a = x; / 构造函数 operator int() return a; / 类型转换函数 Integer operator+(const Integer &i) const / 重载加法运算符
25、+ return c2 ; / 返回和 ;int main(void) / 主函数main(void) Integer a(2), b(3), c; / 定义整数对象 c = a + b; / 求和 cout c endl; / 显示和 return 0; / 返回值0, 返回操作系统3请完成下面的程序#include / 预处理命令using namespace std; / 使用标准命名空间stdtemplate class A private: ElemType a; / 数据成员public: A(ElemType x): a(x) / 构造函数 void Show() const cout a endl; / 显示a之值;int main(void) / 主函数main(void) A obj(Hello, world!); / 定义对象 obj.Show(); / 显示相关信息 return 0; / 返回值0, 返回操作系统四、程序分析题(本大题共4小题,每小题5分,共20分)给出下面各程序的输出结果。1阅读下面程序,写出输出结果。#include / 预处理命令using namespace std; / 使用标准命名空间stdclass Pointprivate: int x; / x坐标 int y;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1