您好,欢迎访问三七文档
一、单项选择题1.类的构造函数被自动调用执行的情况是在定义该类的()A.成员函数时B.数据成员时C.对象时D.友元函数时2.假定一个类的构造函数为“A(inti=4,intj=0){a=i;b=j;}”,则执行“Ax(1);”语句后,x.a和x.b的值分别为()A.1和0B.1和4C.4和0D.4和13.所谓多态性是指()A.不同的对象调用不同名称的函数B.不同的对象调用相同名称的函数C.一个对象调用不同名称的函数D.一个对象调用不同名称的对象4.构造函数不具备的特征是()A.构造函数的函数名与类名相同B.构造函数可以重载C.构造函数可以设置默认参数D.构造函数必须指定类型说明5.在公有继承的情况下,基类的公有或保护成员在派生类中的访问权限()A.受限制B.保持不变C.受保护D.不受保护6.C++对C语言做了很多改进,即从面向过程变成为面向对象的主要原因是()A.增加了一些新的运算符B.允许函数重载,并允许设置缺省参数C.规定函数说明符必须用原型D.引进了类和对象的概念7.在类中说明的成员可以使用关键字的是()A.publicB.externC.cpuD.register8.C++语言中所有在函数中定义的变量,连同形式参数,都属于()A.全局变量B.局部变量C.静态变量D.函数9.在私有继承的情况下,基类成员在派生类中的访问权限()A.受限制B.保持不变C.为共有D.为保护10.使用引用作为函数参数,下列说法正确的是()A.实参是形参的备份B.实参与形参无联系C.形参是实参的备份D.实参与形参是同一对象11.C++的继承性允许派生类继承基类的()A.部分特性,并允许增加新的特性或重定义基类的特性B.部分特性,但不允许增加新的特性或重定义基类的特性C.所有特性,并允许增加新的特性或重定义基类的特性D.所有特性,但不允许增加新的特性或重定义基类的特性12.以下基类中的成员函数表示纯虚函数的是()A.virtualvoidtt()=0B.voidtt(int)=0C.virtualvoidtt(int)D.virtualvoidtt(int){}二、填空题(请在每小题的空格中填上正确答案。错填、不填均无分。)1.抽象类中至少要有一个_纯虚__函数。2.编译时的多态性通过_重载__函数实现。3.基类的公有成员在派生类中的访问权限由_继承方式__决定。4.假设类X的对象x是类Y的成员对象,则“YObj”语句执行时,先调用类___的构造函数。5.下列程序段的输出结果是___。6.C++中有两种继承:单继承和_多重继承__。7.C++语言中如果调用函数时,需要改变实参或者返回多个值,应该采取引用___方式。8.将指向对象的引用作为函数的形参,形参是对象的引用,实参是_对象名__。三、改错题1.classABC{inta;public:ABC(intaa)a(aa){}ABC(intaa):a(aa){};};2.classAton{intX,Y;protected:intzx,zy;public:voidinit(inti,intj){zx=i;zy=j;}Aton(inti,intj,intn=0,intm=0){X=i,Y=j,zx=m,zy=n;}添加intgetX(){returnX};};voidmain(){AtonA(25,20,3,5);A.init(5,9);coutA.getX()endl;3.classBas{public:~Bas(){coutBasconstructendl;}virtualvoidf()=0;};classDev:publicBas{public:~Dev(){coutBasconstructendl;}virtualvoidf(){coutDev::fendl;}};voidmain(){Bas*a=newBas();Bas*a;Devp;a=&p;a-f();}4.以下程序实现交换a,b变量的值,请用下横线标出错误所在行并给出修改意见。voidswap(int&a,int&b){a=a+b;b=a-b;a=a-b;}voidmain(){inta=19,b=15;couta=a,b=bendl;swap(&a,&b);swap(a,b);couta=a,b=bendl;}5.voidmain(){inti(3),j(8);int*constp=&i;int*p=&i;cout*pendl;p=&j;cout*pendl;}四、完成程序题1.在下面程序的底画线处填上适当的字句,使该程序执行结果为40。classTest{public:staticintx______;Test(inti=0){x=i+x;}intGetnum(){returnTest::x+7;}};intTest::x=33_______;voidmain(){Testtest;couttest.Getnum()endl;;}五、程序分析题1.运行程序,写出程序执行的结果。voidmain(){inta,b,c;charch;cinachbc;//从键盘上输入1.5×c×10×20,×表示一个空格coutaendlchendlbendlcendl;}2.给出下面程序输出结果。classA{public:A(){coutAscons.endl;}virtual~A(){coutAsdes.endl;}virtualvoidf(){coutAsf().endl;}voidg(){f();}};classB:publicA{public:B(){f();coutBscons.endl;}~B(){coutBsdes.endl;}};classC:publicB{public:C(){coutCscons.endl;}~C(){coutCsdes.endl;}voidf(){coutCsf().endl;}};voidmain(){A*a=newC;a-g();deletea;}Ascons.Asf().Bscons.Cscons.Csf().Csdes.Bsdes.Asdes.六、程序设计题1.已知交通工具类定义如下。要求:(1)实现这个类;(2)定义并实现一个小车类car,是它的公有派生类,小车本身的私有属性有载人数,小车的函数有init(设置车轮数,重量和载人数),getpassenger(获取载人数),print(打印车轮数,重量和载人数)。classvehicle{protected:intwheels;//车轮数floatweight;//重量public:voidinit(intwheels,floatweight);intget_wheels();floatget_weight();voidprint();};voidvehicle::init(intwheels,floatweight){this-wheels=wheels;this-weight=weight;coutwheelsendl;}intvehicle::get_wheels(){returnwheels;}floatvehicle::get_weight(){returnweight;}voidvehicle::print(){cout车轮数:wheels,重量:weightendl;}
本文标题:《面向对象》练习题
链接地址:https://www.777doc.com/doc-2805605 .html