资源描述
精选优质文档-倾情为你奉上班级学号姓名一、选择题(每题2分,共102=20分)1. 以下有关构造函数的叙述不正确的是( )。A. 构造函数名必须和类名一致 B. 构造函数在定义对象是自动执行C构造函数无任何函数类型 D. 在一个类中构造函数有且仅有一个2. 下列运算符中,( )运算符在C+中不能重载。A.?:B.C.newD.&3. 有以下类的定义,其中出错的位置是( )class Csample Csample(); / Apublic: int a=10; / B Csample(int a0); / C Csample(); / D;4. 以下叙述中不正确的是( )A.某类的友元类中的所有成员函数可以存取或修改该类中的私有成员。B.类的一个成员只能具有一种访问控制属性C.构造函数和析构函数是特殊的成员函数,因此不允许重载D.通过对象只能访问类的公有成员5. 设A为test类的对象且赋有初值,则语句test B=A;表示( )A. 语法错误 B. 为对象A定义一个别名C. 将对象A复制给对象B D. 仅说明B和A属于同一个类6. 友元函数的作用是( )A.提高程序的效率 B.加强类的封装性C.实现数据的隐蔽性 D.增加成员函数的种类7. 以下关于静态成员函数的叙述不正确的是( )A.静态成员函数属于整个类B.对静态成员函数的引用允许使用对象名C.在静态成员函数中不能直接引用类的非静态成员D. 使用类名可以直接调用其静态成员函数8. 以下叙述正确的是( )A.派生类中不可以定义与基类中同名的成员变量B.派生类中不可以重载成员函数C.派生类中不能调用基类中的同名函数D.以上三项均不正确9. 设有以下类和对象的定义:class Apublic: int m;A k1,k2,*p1,*p2;则下面针对成员变量m的引用,正确的是( )A. k1.m=1; B. k2-m=2; C. p1.m=3; D. (*p2)-m=4;10. 派生类的对象对它的哪一类基类成员是可以访问的?( )A公有继承的基类的公有成员 B. 公有继承的基类的保护成员C. 公有继承的基类的私有成员 D. 保护继承的基类的公有成员二、填空题(2*10分)1. 类的成员按访问权限可分为三类: 、 、 。2. 在C+中定义类时,通常是利用 描述对象的“特征”; 利用 描述对象的“行为”。3. int * p = new int20; /动态分配数组 /释放数组4. 为了提高代码通用性,自动适应数据类型的变化,C+中采用 5. 要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,可将该函数定义为 6. 在私有继承关系下,基类的公有成员和保护成员将成为派生类中的 成员,它们只能由 来访问。三、读程并写出程序的运行结果(40分)(注:以下程序都省略了相关头文件)1 (6分)void main() int j=0,s=0;for (int i=8;i=20;i+)if (i%4=0) j+;else s+;coutj=jts=s;2 (6分)int Div(int x,int y);int main()try cout5/2=Div(5,2)endl; cout8/0=Div(8,0)endl; cout7/1=Div(7,1)endl; catch(int) coutexcept of deviding zero.n; coutthat is ok.n;int Div(int x,int y)if(y=0) throw y;return x/y;3 (7分)class Croot public: int small; Croot( ) small=2; Croot(int n) small=n; void showsmall() coutsmall=smallendl; ;class Cder1: public Croot public: Cder1(int m) :Croot(m);class Cder2: public Croot public: int small; Cder2(int n=0) small=n; ;void main() Croot A; Cder1 bb(3); Cder2 cc; A.showsmall(); bb.showsmall(); cc.showsmall();4 (7分)class Animalpublic:virtual void voice() = 0;void display() coutAnimal!endl;class Dog: public Animal public:void voice() coutWang!endl;void display() coutDog!endl; ;class Cat: public Animal public:void voice() coutMiao!endl;void display() coutCat!voice();ptr-display(); void main()Anima* pa2=new Dog(), new Cat();fun(pa0); fun(pa1);5 (7分)class B int b;public: B(int i) : b(i) coutBs constructor called. endl; private:;class C:public B B b; int c;public: C(int i,int j);C:C(int i,int j):B(i),b(i+1)c=j;coutCs constructor called.endl;int main()C obj(1,6);return 0;6 (7分)class count static int n;public: count() n+; void show() coutnendl; count() n-;int count:n=0;void main() count a; a.show(); count b4; b3.show(); a.show();四、综合编程题(20分)1.编写一个抽象类Shape,在此基础上派生出类Rectangle(矩形)和Circle(圆),二者都有计算面积的函数GetArea(),计算周长的函数GetPerim(),并画出类图。(10分)。主函数中,动态分配内存生成2个圆,3矩形,将其地址放入Shape指针数组,并将所有对象的面积和周长以文本方式保存到文件shape.dat中。(10分)参考答案一DABCC ABDAA二1 共有,私有,保护2 成员属性,成员函数3 delete p4 模板5 内联6 私有,派生类成员三1i=4 j=925/2=2except of deviding zero.that is ok.3 small=2small=3small=24 Wang!Animal!Miao!Animal!5 Bs constructor Bs constructor Cs constructor 6 151四略专心-专注-专业
展开阅读全文