C++语言程序设计复习题
    《c++程序设计》复习题
    一、 多项选择题
    1.所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是()
    a、 B类,对象C,函数体D,数据块2。面向对象编程语言的关键元素是()
    a、抽象和封、抽象和多态性
    c、 抽象,封装,继承和多态性D,抽象,封装和继承3。在定义类的()a、成员函数B、数据成员C、对象D和友元函数时,会自动调用并执行类的构造函数
    4.设有函数模板templateqsum(qx,qy){return(x)+(y);}
    以下语句中函数模板的错误使用是()
    a、sum(10,2);b、sum(5.0,6.7);
    c、 总和(15.2f,16.0f);d、 总和(ab、cd);5.假设A类是B类的朋友,B类是C类的朋友,那么()A类必须是C类的朋友,B类必须是A类的朋友
    c、类c的成员函数可以访问类b的对象的任何成员d、类a的成员函数可以访问类b的对象的任何成员6.静态成员函数没有()a、返回值b、this指针c、指针参数
    d、 返回类型
    7.当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中(a、都是虚函数
    b、 只有当它被重新解释时,它才是一个虚拟函数
    c、只有被重新说明为virtual时才是虚函数d、都不是虚函数
    8.以下描述不正确:(a)派生类通常使用公共派生
    b、对基类成员的访问必须是无二义性的c、赋值兼容规则也适用于多重继承的组合d、基类的公有成员在派生类中仍然是公有的9.在c++中实现封装是借助于()
    )a、 枚举C,数组B,类D,函数
    10.所有在函数中定义的变量,都是()a、全局变量b、局部变量c、静态变量d、寄存器变量11.下列特性中,c与c++共有的是()
    a、 继承B、封装C、多态性D和函数定义不能嵌套12。一般来说,函数模板中类型参数的个数不能是()a、0b、2C、4D和3
    13.在下列成对的表达式中,运算符“+”的意义不相同的一对是()a、5.0+2.0和5.0+2c、5.0+2.0和5+2
    b、 5.0+2.0和5+2.0D、5+2.0和5.0+2
    14.类的指针成员的初始化是通过函数完成的,这个函数通常是()a、析构函数b、构造函数c、其它成员函数d、友元函数
    15.禁止修改指针P本身和P指向的数据。该指针应定义为()a,constchar*P=“ABCD”;c、 char*consp=“abcd”
    b、charconst*p=“abcd”;
    d、 constchar*constp=“abcd”
    16.如果表达式++i*k中的“++”和“*”都是重载的友元运算符,则采用运算符函数调用
    表达式也可以表示为()a,运算符*(i.operator++(),K)C,i.operator++(),operator*(K)17。以下语句中正确的一个是()
    a、类定义中只能说明函数成员的函数头,不能定义函数体b、类中的函数成员可以在类体中定义,也可以在类体之外定义c、类中的函数成员在类体之外定义时必须要与类声明在同一文件中d、在类体之外定义的函数成员不能操作该类的私有数据成员
    18.如果派生类的成员函数无法直接访问从基类继承的成员,则该成员必须是基类中的()
    a、私有成员b、公有成员
    c、 受保护成员D、受保护成员或私人成员19。在基类和派生类之间关系的描述中,错误
是()
    a、派生类是基类的具体化b、基类继承了派生类的属性c、派生类是基类定义的延续d、派生类是基类的特殊化
    20.类B是类a的公共派生类。在类a和类B中都定义了虚函数func()。P是指向类a对象的指针,那么P->a::func()将调用类a中的函数func()
    b、operator*(operator++(i),k)d、k.operator*(operator++(i))
    b、 调用类b中的函数func()
    c、根据p所指的对象类型而确定调用类a中或类b中的函数func()d、既调用类a中函数,也调用类b中的函数
    答复:
    1.b2.c3.c4.d5.d6.b7.a8.d9.b10.b
    11.d12.a13.c14.b15.d16.b17.b18.a19.b20.a
    二、填空题
    1.假设用户没有为名为AB的类定义析构函数,系统自动给出的默认析构函数被定义为__。
指向类成员函数的指针
    2.模板定义中标识类型的参数必须用关键字_________修饰。3.表达式count<4.通过c++语言中的_________机制,可以从现存类中构建其子类。5.要在调用虚函数的时候强制进行静态联编,可以通过在调用中对虚函数加_________实现。6.封装要求一个对象应具备明确的功能,并具有_________以便和其它对象相互作用。7.在删除一个动态对象时,将自动调用该动态对象所属类的_________函数。8.静态成员函数、友元函数、构造函数和析构函数中,不属于成员函数的是_________。9.在下面的类定义中,私有成员有_________。classlocation{intx,y;protected:intzerox,zerxy;intsetzero(intzerox,intzeroy);private:intlength,height;public:voidinit(intinitx,intinity);intgetx();intgety();};10.类的私有成员只能被它的成员函数和_________访问。11.在用c++进行程序设计时,最好用___________________代替malloc。12.函数模板中紧随template之后尖括号内的类型参数都要冠以保留字________________。13.在ios类中定义的用于控制输入输出格式的枚举常量中,用于代表十进制、八进制和十六进制的3个枚举常量是dec、oct和____________
_______。14.如果重载了运算符+,则相应的运算符函数名是___________________。15.由static修饰的数据成员为该类的所有对象___________________。16.设函数max是由函数模板实现的,并且max(3.5,5)和max(10,5)都是正确的函数调用,则该模板具有______个类型参数。17.在单继承和多继承方式中,面向对象的程序设计应尽量使用______继承。18.语句序列ifstreamdatafile;datafile.open(“data.dat”);的功能可用一个语句实现,这个语句是______。19.将关键字const写在函数头之后,函数体之前,说明该函数是一个const成员函数。此时const不是指定函数的返回值,而是修饰______指针。20.一个抽象类的派生类可以实例化的必要条件是实现了所有的______。21.在c++中,虚函数帮助实现了类的______性。22.通过c++语言中类的______,可以扩充和完善已有类以适应新的需求。23.为了在对象生存期结束时释放其指针成员所指向的动态存储空间,通常需要为该类定义______。24.在联合中,所有数据成员具有_____的地址,任一时刻只有_____个数据成员有效。25.在已经定义了整型指针ip后,为了得到一个包括10个整数的数组并由ip所指向,应使用语句______。26.为了实现多态性,派生类需重新定义基类中的___________________。27.编译时的多态性通过___________________函数实现。28.在派生类中实现基类成员的初始化,需要由派生类的构造函数调用_________________来
完成。29.在c++中,访问指针所指向的对象的成员使用运算符___________________。30.重载函数在参数类型或参数个数上不同,但___________________相同。答案:1.~ab(){};2.class(或typcname)3.cout,sctf(ios::hex,ios::basefield)(或cout.setf(ios::hex),或cout<16.2;17.单一(或单);18.ifstreamdatafile(“data.dat”)19.this;20.纯虚函数;21.多态;22.继承机制;23.析构函数24.相同一(说明:答对一个给1分);25.ip=newint[10];;26.虚函数27.重载;28.基类的构造.函数;29.->;30.函数名三、改错题1.指出下面程序中的错误,并说明出错原因。#includeclassconstfun{public:voidconstfun(){}constintf5()const{return5;}intobj(){return45;}intval;intf8();};intconstfun::f8(){returnval;}voidmain(){constconstfuns;inti=s.f5();cout<2.指出下面程序中的错误,并说明错误原因。#includeclassa{public:voidfun(){cout<classb{public:voidfun(){cout<classc:publica,publicb{private:intb;public:voidgun(){cout<voidmain(){cobj;obj.fun();obj.gun();}3.指出下面程序段中的错误,并说明出错原因。classlocation{intx,y;protected:intzerox,zeroy;intsetzero(intzerox,intzeroy){x=zerox;y=zeroy;}private:intlength,height;
   
   

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。