1、城建大学计算机期末习题练习一、单选题 (本题共10小题,每题2分,共20分) 1下面选项中,不是类的成员函数为A) 构造函数 B) 析构函数C) 友元函数 D) 复制构造函数2下面对析构函数的正确的描述是A) 系统可以提供默认的析构函数 B) 析构函数必须由用户定义C) 析构函数可以重载 D) 析构函数可以设置默认参数3关于类和对象不正确的说法是_A) 类是一种类型,它封装了数据和操作 B) 对象是类的实例C) 一个类的对象只有一个 D) 一个对象必属于某个类4在类的外部,可以被访问的成员有_A) 所有类成员 B) private或protected的类成员C) public的类成员 D) p
2、ublic或private的类成员5声明一个类的对象时,系统自动调用一个函数;撤消对象时,系统自动调用一个函数;该函数为_A) 成员函数;构造函数 B) 复制构造函数;析构函数C) 构造函数;析构函数 D) 析构函数;复制构造函数6假定XY为一个类,则该类的拷贝构造函数的声明语句为。A) XY&(XY x); B) XY(XY &x); C) XY(XY x); D) XY(XY *x);7当一个派生类保护继承一个基类时,基类中的所有公有成员和保护成员成为派生类的A) 友元 B) private成员C) public成员 D) protected成员8在C+中,要实现动态联编,必须使用_ _调
3、用虚函数A) 类名 B) 派生类指针C) 对象名 D) 基类指针9下列函数原型声明中,_ _声明了fun为纯虚函数A) void fun()=0; B) virtual void fun()=0;C) virtual void fun(); D) virtual void fun() ;10假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为_ _。A) int AA:a() B) int AA:a()C) AA:a() D) AA:int a()二、 填空题(本题共10小题,每题3分,共30分)1 类A中有一个数据成员static int b,在类外
4、为它定义并初始化为0时使用的语句为_;_ 2 在一个派生类中,对派生类对象成员、基类成员和子对象成员的初始化次序是先_ _,后 _ _,最后为_。3 把函数void fun(); 定义为一个类ABC的友元函数,则应在类ABC的定义中加入一条语句: _; 。4 在C+流类库中,根基类为_ _。5 函数的递归调用是指函数直接或间接地调用 。6 在定义类对象的语句执行时,系统在建立每个对象的过程中将自动调用该类的_ _,使其初始化。7 类只能作为基类使用,而不能声明它的对象。8 若要在程序文件中进行文件输入输出操作。必须在开始的#include命令中使用_ _头文件。9 通过一个 对象只能调用它的常
5、成员函数,不能调用其他成员函数。10类的成员函数可以在类内或类外定义。若在类外定义,在类中必需对成员函数进行_。三、 写出下列程序运行后的输出结果(本题共6小题,每题5分,共30分)1带默认参数的构造函数#include class M int a,b; public: M(int aa=1,int bb=2):a(aa),b(bb) coutconstructor!a+bendl; ; void main() M x,y(2,3); constructor!3constructor!52析构函数的调用#includeclass Mint *a; public: M(int aa=3) a=n
6、ew int(aa); coutconstructor!*aendl; M()coutdestructor! *aendl; ;void main() M x2; M *p=new M(8); delete p;constructor!3constructor!3constructor!8destructor!8destructor!3destructor!33运算符重载#includeclass Mint a,b;public: M()a=b=0; M(int aa,int bb)a=aa,b=bb; M operator +(M& x) M r;r.a= a+x.a;r.b=b+x.b;r
7、eturn r; M operator -(M& x) M r; r.a=a-x.a; r.b=b-x.b; return r; void OutB() couta bendl;void main() M x(3,5),y(8,4),z1,z2;z1=x+y;/x.operator+(y);z2=x-y;z1.OutB();z2.OutB();11 9-5 14含子对象的派生类#includeclass AX int x;public: AX(int xx=0):x(xx) void output() coutx ; int Get()return x;class BX:public AX i
8、nt y; AX z;public: BX(int xx=0,int yy=0):AX(xx),y(yy),z(xx+yy) void output() AX:output();coutGet() ; couty z.Get()endl; ;void main() BX a(8),b(11,22);a.output();b.output();8 8 0 811 11 22 335虚函数实现的多态#includeclass AYprotected:int a,b;public: AY(int aa=0,int bb=0) a=aa;b=bb; virtual void compute() cou
9、ta+b=a+bendl; ;class BY:public AYpublic:BY(int aa=0,int bb=0):AY(aa,bb) void compute()couta-b=a-bendl;class CY:public BYpublic:CY(int aa=0,int bb=0):BY(aa,bb)void compute()couta*b=a*bendl; class DY:public AYpublic:DY(int da=0,int db=0):AY(da,db)void compute()if(b!=0) couta/b=a/bendl;else coutdixisio
10、r is zero!endl;void main() int n=10,m=5;AY ay(n,m);BY by(n,m);CY cy(n,m);DY dy(n,m);AY * a4=&ay,&by,&cy,&dy;for(int i=0;icompute();AY &ax=cy; pute();AY aa=cy; pute();10+5=1510-5=510*5=5010/5=210*5=5010+5=15一、 选择填空1. 在下列关键字中,用以说明类中公有成员的是( )A. public; B. private; C. protected; D. friend;2. 下列的各类函数中,(
11、)不是类的成员函数。A. 构造函数; B. 析构函数; C . 友元函数; D. 拷贝初始化构造函数;3. 作用域运算符的功能是( )。A. 标识作用域的级别的;B. 指出作用域的范围的;A. 给定作用域的大小的;D. 标识某个成员是属于哪个类的。4. ( )是不可能作为该类的成员的。A. 自身类对象的指针; B.自身类的对象;C.自身类对象的引用; D.另一个类的对象。5. ( )不是构造函数的特征A. 构造函数的函数名与类名相同;B. 构造函数可以重载;C. 构造函数可以设置缺省参数;D. 构造函数必须指定类型说明。6. ( )是析构函数的特征。A. 一个类中只能定义一个析构函数;B. 析
12、构函数与类名不同;C. 析构函数的定义只能在类体内;D. 析构函数可以有各个或多个参数。7. 下述静态数据成员的特征中,( )是错误的。A. 说明静态数据成员时前边要加修饰符static;A. 静态数据成员要在类体外进行初始化;B. 引用静态数据成员时,要在静态数据成员名前加和作用域运算符;C. 静态数据成员不是所有对象所共用的。8. 友元的作用( )。A. 提高程序的运用效率;B. 加强类的封装性;C. 实现数据的隐藏性;D. 增加成员函数的种类。 分析下列程序的输出结果。1.构造函数重载#includeclass A public:A();A(int i,int j);void print
13、( ); private:int a,b;A:A( ) a=b=0; cout”Default constructor called.n”; A:A(int i,int j) a=i;b=j;cout”Constructor called.n”;void A:print() cout”a=”a”,b=”bendl;void main()A m,n(4,8);m.print();n.print();提示:定义对象的时候调用构造函数Default constructor called.Constructor called.a=0,b=0a=4,b=82. 子对象#includeclass B pu
14、blic:B();B(int i,int j);void printb( ); private:int a,b;class A public:A();A(int i,int j);void printa( ); private:B c;A:A(int i,int j):c(i,j)void A:printa() c.printb();B:B(int i,int j) a=i;b=j;void B:printb() cout”a=”a”,b=”bendl;void main()A m(7,9);m.printa();a=7,b=9;3.静态成员函数,静态成员#includeclass Count
15、 public: Count () count+; static int HM()return count; Count()count-; private: static int count; ; int Count:count=100;void main() Count c1,c2,c3,c4; coutCount:HM()endl;1044.友元函数#includeclass A public: A(double t,double r)Total=t;Rate=r; friend double Count(A&a) a.Total+=a.Rate*a.Total; return a.Tot
16、al; private:double Total,Rate;void main() A a1(1000.0,0.035),a2(768.0,0.028); coutCount(a1)”,”Count(a2)endl;1035,789.5041、#include class A public: A(int i,int j)a=i;b=j; void Move(int x,int y)a+=x;b+=y; void Show()cout”(”a”,”b”)”endl;private:int a,b;class B:private A public: B(int i,int j, int k,int
17、 l):A(i,j) x=k;y=l; void Show() coutx”,”yendl; void fun() Move(3,5); void f1() A:Show(); private: int x,y; ; void main() A e(1,2); e.Show(); B d(3,4,5,6); d.fun(); d.Show(); d.f1();(1,2)5,6(6,9)2、#include class B public: B(int i)b=i+50;show(); B() virtual void show()cout”B:show() called.”bendl;protected:int b;class D:public B public: D(int i):B(i) d=i+100;show(); D() void show() cout”D:show() called.”dendl; protected: int d; ; void main() D d1(108); B:show() called.158D:show() called.208
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2