收藏 分享(赏)

C++_谭浩强_总复习题4.doc

上传人:精品资料 文档编号:10722619 上传时间:2020-01-02 格式:DOC 页数:20 大小:80.50KB
下载 相关 举报
C++_谭浩强_总复习题4.doc_第1页
第1页 / 共20页
C++_谭浩强_总复习题4.doc_第2页
第2页 / 共20页
C++_谭浩强_总复习题4.doc_第3页
第3页 / 共20页
C++_谭浩强_总复习题4.doc_第4页
第4页 / 共20页
C++_谭浩强_总复习题4.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、 1习题四填空题1、联编是指一个程序模块、调用代码之间互相关联的过程。根据联编的时机不同,可以分为静态联编和( 动态联编 ) 。2、包含一个或多个纯虚函数的类称为(抽象类 ) 。3、虚函数应该在( 基类 )中声明,且不能在派生类中重新定义。4、纯虚函数是( 只有函数声明而没有具体函数功能实现的虚函数) 。5、在析构函数前面加上关键字( virtual)进行说明,称该析构函数为虚析构函数。6、如果一个基类的析构函数被说明为虚析构函数,则它的派生类中的(析构函数 )也是虚析构函数。7、多态性分为两类:编译时的多态性和( 运行时的多态性 ) ,编译时的多态性是通过和( 函数 )模板实现的。8、对虚函

2、数的调用有两种方式:( 指针调用 )和( 对象调用 ) 。9、实现编译时的多态性的机制称为(静态关联 ) ,实现运行时的多态性的机制称为( 动态关联 ) 。10、有一种特殊的虚函数,重定义时不要求同名,这种虚函数是(虚析构函数 ) 。11、模板可以实现程序设计中的( 代码重用 ) ,体现了面向对象程序设计的(重用性 ) 。12、C+模板可以分为( 函数模板 )和(类模板 ) 。13、由函数模板实例化后是( 模板函数 ) ,由类模板实例化后是(模板类 ) 。14、模板的声明使用关键字(template ) 。15、已知int sum(int n)return n+n;long sum(long

3、n)return n+n;是一个函数模板的两个实例,则该函数模板的定义是( templateT sum(T n)return n+n; ) 。选择题1、下面的 4 个关键字中, ( A )是用来说明虚函数的。A. virtual B. public C. protected D. private2、实现运行时的多态性要使用( D ) 。A. 重载函数 B. 构造函数 C. 析构函数 D.虚函数3、如果一个类至少有一个纯虚函数,那么该类称为( C ) 。2A. 虚基类 B. 派生类 C. 抽象类 D. 以上都不对4、下列描述中, ( D )是抽象类的特征。A. 可以说明虚函数B. 可以进行构造函

4、数重载C. 可以定义友元D. 不能说明其对象5、下列关于虚函数的描述中, ( C )是正确的。A. 虚函数是一个非成员函数B. 虚函数是一个静态成员函数C. 派生类的虚函数与基类种对应的虚函数具有相同的参数个数和类型D. 虚函数既可以在函数说明时定义,也可以在函数实现时定义6、下列关于纯虚函数与抽象类的描述中, ( C )是错误的。A. 抽象类是指具有纯虚函数的类B. 纯虚函数是一个特殊的虚函数,它没有具体的实现C. 一个基类中说明具有纯虚函数,该基类的派生类一定不再是抽象类D. 抽象类只能作为基类来用,其纯虚函数的实现由派生类给出7、下列各函数的说明中, ( B )表示纯虚函数。A. vir

5、tual int vf(int); B. void vf(int)=0;C. virtual void vf()=0; D. virtual void vf(int)8、虚函数必须是类的( D ) 。A. 友元函数 B. 构造函数 C. 析构函数 D. 成员函数9、下列关于虚函数的描述中, ( A )是正确的。A. 虚函数不能声明为另一个类的友元函数B. 虚函数不能声明为静态成员函数C. 派生类必须重新定义基类的虚函数D. 如果在重定义虚函数时使用了保留字 virtual,则该重定义函数仍然是虚函数10、多态调用是指( C ) 。A. 以任何方式调用一个虚函数B. 以任何方式调用一个纯虚函数C

6、. 借助于指向对象的基类指针或引用调用一个虚函数D. 借助于指向对象的基类指针或引用调用一个纯虚函数11、在 C+中,要实现动态联编,必须使用( D )调用虚函数。A. 类名B. 派生类指针3C. 对象名D. 基类指针12、下列函数中,可以作为虚函数的是( D ) 。A. 普通函数B. 构造函数C. 友元函数D. 析构函数13、在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数返回值( B ) 。A. 不同B. 相同C. 相容D. 部分相同14、假设 Aclass 为抽象类,下列声明( B)是正确的。A. Aclass fun(int);B. Aclass *p

7、;C. int fun(Aclass);D. Aclass Obj;15、下面描述中,正确的是( D ) 。A. 虚函数是没有实现的函数B. 纯虚函数的实现只能在直接派生类中定义C. 抽象类是只有纯虚函数的类D. 抽象类指针可以指向不同的派生类16、当运行程序时实际上是将类模板实例化为一个具体的( D ) 。A. 类 B. 对象 C. 函数 D. 模板类17、模板函数的真正代码是在( C )时产生的。A. 源程序中声明函数时 B. 源程序中定义函数时C. 源程序中调用函数时 D. 运行执行函数时18、类模板的模板参数( D ) 。A. 只可作为数据成员的类型 B. 只可作为成员的返回值类型C.

8、 只可作为成员函数的参数类型 D. 以上三者皆可19、以下关于模板的叙述中,不正确的是( C ) 。A. 用模板定义一个对象时不能省略参数B. 类模板只能有虚拟参数类型4C. 类模板的成员函数都是模板函数D. 类模板本身在编译中不会生成任何代码20、如果有如下函数模板的定义:template T func(T x,T y)return x+y;则对函数 func 调用不正确的是( C ) 。A. func(3,5); B. funcwho();p=p-who();obj2.who();obj3.who();96、#include#includeusing namespace std;class

9、 Base char base_name20;public:Base()strcpy(base_name,“BASE“);virtual char*my_name()return base_name;char*class_name()return base_name;class Derived:public Basechar derived_name20;public:Derived()strcpy(derived_name,“DERIVED“);char*my_name()return derived_name;char*class_name()return derived_name;voi

10、d show_ptr(Base*p)coutmy_name()class_name();void show_ref(Baseclass Circleprotected:double r; public:Circle(double radius=0):r(radius)virtual double Area()=0 ; virtual double Volume()=0; ;class Sphere:public Circle public:Sphere(double radius=0):Circle(radius)double Area() return 4*PI*r*r;double Vol

11、ume() return 4*PI*pow(r,3)/3; ;class Cylinder:public Circle double h;public:Cylinder(double radius=0,double height=0):Circle(radius) h=height; double Area() return 2*PI*r*(r+h); 11double Volume() return PI*r*r*h; ;class Cone:public Circle double h;public:Cone(double radius=0,double height=0):Circle(

12、radius) h=height; double Area()double l=sqrt(h*h+r*r); return PI*r*r*(r+l);double Volume()return PI*r*r*h/3;void Output(Circle*b,int n)for(int i=0;iArea()Volume()template 12T min(T x,T y)if (xtemplate T total(T *p)T sum=0;while(*p)sum+=*p+; return sum;int main()int x=1,3,5,7,9,0,13,15,17;coutT sum(T

13、 n)return n+n;二、 选择题1、A 2、D 3、C 4、D 5、C 6、C 7、C 8、D 9、A 10、C 11、D 12、D 13、B 14、B 15、D 16、D 17、C 18、D 19、C 20、C14三、 判断题1、 2、 3、 4、 5、 6、 7、 8、 9、 10、四、 分析题1、实例化类 A 的一个对象。实例化类 A 的一个对象。实例化类 B 的一个对象。-执行类 A 的成员函数。执行类 B 的成员函数。-执行类 B 的成员函数。-消除类 B 的一个对象。消除类 A 的一个对象。消除类 A 的一个对象。2、Execting Circle dtorExecting

14、 shape dtor3、Derived funDerivedBase4、80105、base class1derive1 class2derive2 class3derive1 class2derive2 class36、15BASEBASEclass RQpublic:virtual float calTJ()=0;virtual void display()=0;class LFT:public RQprivate: float A;public:LFT(float a)A=a;float calTJ()return A*A*A;void display()coutdisplay();p

15、=p-display();2、#includeclass Employeepublic:virtual double earn()=0;virtual void print()=0;class Manager:public Employeeprivate:double msalary;public:Manager(double ms)msalary=ms;double earn()return msalary;17void print()coutprint();p=p-print();3、#include “iostream.h“#include “math.h“const double PI

16、=3.14;class Shapepublic:virtual void GetPerimeter()=0;virtual void GetArea()=0;protected:double per;double area;18; class Circle:public Shapedouble Radius;public:Circle(double r) Radius=r; void GetPerimeter() per=2*PI*Radius; coutGetPerimeter(); p-GetArea();p= p-GetPerimeter(); p-GetArea();4、#includetemplate T min(T a,T b)return atemplate class inputpublic:input()couta;if(a100)couta;private:T a;20;void main()input a;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报