青岛科技大学C++程序设计基础期末复习题_第1页
青岛科技大学C++程序设计基础期末复习题_第2页
青岛科技大学C++程序设计基础期末复习题_第3页
青岛科技大学C++程序设计基础期末复习题_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

不定项选择题1.设计一个自定义类时,需要在屏幕上显示或向文件写入类对象的数据,最佳选择方法是C。A.为屏幕显示和文件写入各自设计一个成员函数。B.为屏幕显示和文件写入统一设计一个成员函数。C.重载插入运算符(<<)。D.重载提取运算符(>>)。2.关于异常处理,那些说法是错误的D。A.在C++程序中,由throw表达式抛出异常,而该表达式应直接或间接地被包含在try块中。B.当抛出异常后,寻找匹配的catch子句有固定的过程:逆着程序函数的调用链返回,称为栈展开(StackUnwinding)。C.当某条语句抛出异常时,跟在其后的语句将被跳过,但析构函数仍然执行,所以应该在析构函数中释放资源。D.catch子句实际是一个特殊的函数。3.下列关于动态资源分配的说法中错误的是B。A.动态分配的资源不仅包括内存,还包括文件。B.动态内存分配的优点在于可以随时给数组分配所需的内存而不会失败。C.动态分配的资源通常要求在析构函数中释放。D.对含有动态分配的数据成员的类对象应该采用深复制。4.下列有关模板的描述那些是错误的C。A.模板把数据类型作为一个设计参数,称为参数化程序设计。B.模板参数除模板类型参数外,还有非类型参数。C.类模板与模板类是同一概念。D.使用时,模板参数与函数参数相同,是按位置而不是名称对应的。5.关于多态,下面那些说法是正确的ABCD。A.多态分静态的(编译时)和动态的(运行时)。B.运行时的多态与类的层次结构有关。C.在基类定义了虚函数后,在派生类中重新定义时可以不加关键字virtual。D.仅使用虚函数并不能实现运行时的多态性,还必须采用指针或引用来调用才能真正实现运行时的多态性。二、填空题1、通过抽象找出同一类对象的共同属性和行为,形成类。2、假设Point为点的类有两个数据成员分别为点的横坐标和纵坐标,有语句PointA(5,10);要声明一个指向A的指针Ptr,所用的语句是Point*Ptr; Ptr=&A;或Point*Ptr=&A;。3、拷贝构造函数使用已经存在的对象,去初始化同类的一个新对象,其形参必须是本类对象的引用。4、递归调用是函数直接或间接的调用自身。5、含有纯虚函数的类是抽象类。6、在类中将抽象出的数据成员、代码成员结合成一个独立的系统单元,称为封装。7、多继承且有内嵌对象时的构造函数调用次序是先调用基类构造函数,调用顺序按照它们被继承时声明的顺序(从左向右),再调用成员对象的构造函数,调用顺序按照它们在类中声明的顺序,最后调用派生类的构造函数体中的内容。8、运算符重载时,其函数名由关键字operator和重载的运算符构成。成员函数重载双目运算符时,左操作数是对象,右操作数是该函数的参数。9、C/C++中的多维数组用的是一个递归的定义,即多维数组的基本定义是数组构成的数组,三维数组的元素是二维数组。10、单链表的结点包含两个域:数据域和指针域。使用链表的最大的优点是用多少就开多少空间,即使是动态数组也做不到这一点。11、纯虚函数定义时在函数参数表后加=0,它表明程序员对函数体不定义,其本质是将指向函数体的指针定为空指针。三、分析下列程序中的错误,说明出错原因,并改正。1、#include<iostream>usingnamespacestd;classA{intx;public:A(inta){x=a;fun();}virtualvoidfun()=0;};classB:publicA{public:B(intb):A(b){}voidfun(){}};voidmain(){ Aaa(5);Bbb(8);}答:Aaa(5)错误;抽象类不能定义对象;把virtualvoidfun()=0;改为virtualvoidfun(){}2、#include<iostream>usingnamespacestd;classPart{public:Part(){val=0;Cout<<"CallingPartconstructor()"<<endl;}Part(inti);private:intval;};classWhole{public: Whole();Whole(intk);private:Partone;Parttwo;intdate;};Part::Part(inti){val=i;Cout<<"CallingPartconstructor(int)"<<endl;}Whole::Whole(){date=0;cout<<"CallingWholeconstructor()"<<endl;}Whole::Whole(intk){date=k;cout<<"CallingWholeconstructor(int)"<<endl;}intmain(){ Partp1,p2(2); Wholew1(3,4,5); return0;}答:Whole(intk);错误,应该给两个内嵌对象传递参数,函数原型改为Whole(inti,intj,intk);函数实现改为Whole::Whole(inti,intj,intk):two(i),one(j){ date=k;cout<<"CallingWholeconstructor(int)"<<endl;}四、编程题定义一个基类BaseClass,从它派生出类DerivedClass,BaseClass有成员函数fn1()、fn2(),DerivedClass也有成员函数fn1()、fn2(),在主程序中定义一个DerivedClass的对象,分别用DerivedClass的对象以及BaseClass和DerivedClass的指针来调用fn1()、fn2(),写出运行结果并适当分析。(函数fn1()、fn2()可以分别输出相应的类和函数名)答:#include<iostream.h>usingnamespacestd;classBaseClass{public:voidfn1();voidfn2();};voidBaseClass::fn1(){cout<<"调用基类的函数fn1()"<<endl;} voidBaseClass::fn2(){cout<<"调用基类的函数fn2()"<<endl;} classDerivedClass:publicBaseClass{public:voidfn1();voidfn2();}; voidDerivedClass::fn1(){cout<<"调用派生类的函数fn1()"<<endl;} voidDerivedClass::fn2(){cout<<"调用派生类的函数fn2()"<<endl;} voidmain(){DerivedClassaDerivedClass; DerivedClass*pDerivedClass=&aDerivedClass; BaseClass*pBaseClass=&aDerivedClass; aDerivedClass.fn1();aDerivedClass.fn2();

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论