ImageVerifierCode 换一换
格式:DOC , 页数:29 ,大小:61KB ,
资源ID:4499120      下载积分:5 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4499120.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(C++-谭浩强-总复习题4.doc)为本站上传会员【二***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

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

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

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

3、使用关键字(template )。 15、已知 int sum(int n){return n+n;} long sum(long n){return n+n;} 是一个函数模板的两个实例,则该函数模板的定义是( template T sum(T n){return n+n;} )。 选择题 1、下面的4个关键字中,( A )是用来说明虚函数的。 A. virtual B. public C. protected D. private 2、实现运行时的多态性要使用( D )。 A. 重载函数 B. 构造函数 C.

4、析构函数 D.虚函数 3、如果一个类至少有一个纯虚函数,那么该类称为( C )。 A. 虚基类 B. 派生类 C. 抽象类 D. 以上都不对 4、下列描述中,( D )是抽象类的特征。 A. 可以说明虚函数 B. 可以进行构造函数重载 C. 可以定义友元 D. 不能说明其对象 5、下列关于虚函数的描述中,( C )是正确的。 A. 虚函数是一个非成员函数 B. 虚函数是一个静态成员函数 C. 派生类的虚函数与基类种对应的虚函数具有相同的参数个数和类型 D. 虚函数既可以在函数说明时定义,也可以在函数实现时定义 6、下列关于纯虚函数与抽象类的描

5、述中,( C )是错误的。 A. 抽象类是指具有纯虚函数的类 B. 纯虚函数是一个特殊的虚函数,它没有具体的实现 C. 一个基类中说明具有纯虚函数,该基类的派生类一定不再是抽象类 D. 抽象类只能作为基类来用,其纯虚函数的实现由派生类给出 7、下列各函数的说明中,( B )表示纯虚函数。 A. virtual int vf(int); B. void vf(int)=0; C. virtual void vf()=0; D. virtual void vf(int){} 8、虚函数必须是类的( D )。 A. 友元函数 B. 构造函数 C. 析

6、构函数 D. 成员函数 9、下列关于虚函数的描述中,( A )是正确的。 A. 虚函数不能声明为另一个类的友元函数 B. 虚函数不能声明为静态成员函数 C. 派生类必须重新定义基类的虚函数 D. 如果在重定义虚函数时使用了保留字virtual,则该重定义函数仍然是虚函数 10、多态调用是指( C )。 A. 以任何方式调用一个虚函数 B. 以任何方式调用一个纯虚函数 C. 借助于指向对象的基类指针或引用调用一个虚函数 D. 借助于指向对象的基类指针或引用调用一个纯虚函数 11、在C++中,要实现动态联编,必须使用( D )调用虚函数。 A. 类名 B.

7、派生类指针 C. 对象名 D. 基类指针 12、下列函数中,可以作为虚函数的是( D )。 A. 普通函数 B. 构造函数 C. 友元函数 D. 析构函数 13、在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数返回值( B )。 A. 不同 B. 相同 C. 相容 D. 部分相同 14、假设Aclass为抽象类,下列声明( B)是正确的。 A. Aclass fun(int); B. Aclass *p; C. int fun(Aclass); D. Aclass Obj; 15、下面描述中,正确的是( D

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

9、参数类型 D. 以上三者皆可 19、以下关于模板的叙述中,不正确的是( C )。 A. 用模板定义一个对象时不能省略参数 B. 类模板只能有虚拟参数类型 C. 类模板的成员函数都是模板函数 D. 类模板本身在编译中不会生成任何代码 20、如果有如下函数模板的定义: template T func(T x,T y) {return x+y;} 则对函数func调用不正确的是( C )。 A. func(3,5); B. func<>(3,5); C. func(3,2.5); D. func(3,2.5); 判断题 1、在

10、C++中,要实现动态联编,可以使用基类指针调用虚函数。√ 2、构造函数可以作为虚函数使用。N 3、虚函数是没有实现的函数。N 4、在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数返回值部分相同。N 5、抽象类是只有纯虚函数的类。N 6、构造函数可以作为虚函数。N 7、纯虚函数是一个特殊的虚函数,它没有具体的实现。√ 8、虚函数的声明需要使用关键字protected。N 9、设置虚函数的目的是为了消除二义性。N 10、抽象类只能作为基类使用,其纯虚函数的实现由派生类来完成。√ 分析题 1、 #include cl

11、ass A { public: A() { cout<

12、 cout<f(); cout< class shape { public: shape(){}; virtual ~shape() {

13、cout<<"Execting shape dtor"< using namespace std; class Base { privat

14、e: int x; public: Base(int a=0) { x=a; } virtual void fun() { cout<<"Base fun"<

15、d() { cout<<"~Derived"<fun(); } int main() { Derived *p=new Derived; GFun(p); delete p; return 0; } 4、 #include class Base { public: virtual int func(){return 10;} }; class Derived:public Base { public: int func(){return 8

16、0;} }; void main() { Derived d; Base&b=d; cout< class base { public: virtual void who(){cout<<"base class1"<

17、ss derive2:public base { public: void who() {cout<<"derive2 class3"<who(); p=&obj2; p->who(); p=&obj3; p->who(); obj2.who(); obj3.who(); } 6、 #include #include using

18、namespace std; class Base{ char base_name[20]; public: Base(){strcpy(base_name,"BASE");} virtual char*my_name(){return base_name;} char*class_name(){return base_name;} }; class Derived:public Base{ char derived_name[20]; public: Derived(){strcpy(derived_name,"DERIVED

19、");} char*my_name(){return derived_name;} char*class_name(){return derived_name;} }; void show_ptr(Base*p) { cout<my_name()<<""<class_name(); } void show_ref(Base&r) { cout<

20、 cout<

21、 cout<<"<==应显示'ABCD EFG'"; return 0; } 7、 #include #include const double PI=3.14; class Circle { protected: double r; public: Circle(double radius=0):r(radius){} virtual double Area()=0 ; virtual double Volume()=0; }; class Sphere:public Circle

22、 { public: Sphere(double radius=0):Circle(radius){} double Area(){ return 4*PI*r*r;} double Volume(){ 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

23、r+h); } double Volume(){ return PI*r*r*h; } }; class Cone:public Circle { double h; public: Cone(double radius=0,double height=0):Circle(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; } }

24、 void Output(Circle*b[],int n) { for(int i=0;iArea()<<" "<Volume()< template T min(T x,T y) { if (x

25、) return x; else return y; } void main() { int n1=2,n2=8; double d1=2.3,d2=5.6; cout< template T total(T *p) { T sum=0; while(*p) sum+=*p++; return sum; } int main() { int x[]={1,3,5,7,9,0,13,1

26、5,17}; cout<

27、实现每个人的月工资。要求利用纯虚函数实现。 3、编程计算圆形(Circle)和正方形(Square)的周长和面积。要求定义一个抽象类,其中包括求周长(per)和面积(area)的纯虚函数,然后在此基类的基础上,派生出圆形类和正方形类,主函数通过基类的指针调用各派生类的函数。 4、用函数模板实现求两个整数、两个浮点数和两个字符中的最小值。 5、定义一个类模板input,在调用构造函数时,完成的工作包括:提示用户输入;让用户输入数据;如果用户输出数据不在预定范围内,提示重新输入。 习题答案 一、 填空题 1、动态联编 2、抽象类 3、基类 4、只有函数声明而没有具体函数功能实现的

28、虚函数。 5、virtual 6、析构函数 7、运行时的多态性 ,函数 8、指针调用 ,对象调用 9、静态联编 ,动态联编 10、虚析构函数 11、代码重用 ,可重用性 12、函数模板 ,类模板 13、模板函数,模板类 14、template 15、template T sum(T 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、C 三、

29、判断题 1、√ 2、× 3、× 4、× 5、× 6、× 7、√ 8、× 9、× 10、√ 四、 分析题 1、 实例化类A的一个对象。 实例化类A的一个对象。 实例化类B的一个对象。 ---------- 执行类A的成员函数。 执行类B的成员函数。 ---------- 执行类B的成员函数。 ---------- 消除类B的一个对象。 消除类A的一个对象。 消除类A的一个对象。 2、 Execting Circle dtor Execting shape dtor 3、 Derived fun ~Derived ~Base 4、 80 10 5

30、 base class1 derive1 class2 derive2 class3 derive1 class2 derive2 class3 6、 BASEBASE<==应显示'ABCD EFG' DERIVEDBASE<==应显示'DERIVED EFG' BASEBASE<==应显示'ABCD EFG' DERIVEDBASE<==应显示'DERIVED EFG' BASEBASE<==应显示'ABCD EFG' 7、 50.24 33.4933 62.8 37.68 70.4057 12.56 8、 2 2.3

31、 9、 25 五、编程题 1、 #include class RQ { public: virtual float calTJ()=0; virtual void display()=0; }; class LFT:public RQ { private: float A; public: LFT(float a){A=a;} float calTJ(){return A*A*A;} void display(){cout<<"立方体体积为"<

32、blic RQ { private: float A,B,C; public: CFT(float a,float b,float c){A=a;B=b;C=c;} float calTJ(){return A*B*C;} void display(){cout<<"长方体体积为"<display(); p=&C1; p->display(); } 2、 #include<

33、iostream.h> class Employee { public: virtual double earn()=0; virtual void print()=0; }; class Manager:public Employee { private: double msalary; public: Manager(double ms){msalary=ms;} double earn(){return msalary;} void print(){cout<<"主管月工资为:"<

34、orker:public Employee { private: double wage; int hours; public: Hworker(double w,int h){wage=w;hours=h;} double earn(){return 2500+hours*50;} void print(){cout<<"员工加班"<

35、 p->print(); p=&h1; p->print(); } 3、 #include "iostream.h" #include "math.h" const double PI=3.14; class Shape { public: virtual void GetPerimeter()=0; virtual void GetArea()=0; protected: double per; double area; }; class Circle:public Shape { double Radius; public: Cir

36、cle(double r) { Radius=r; } void GetPerimeter() { per=2*PI*Radius; cout<<"Circle's perimeter:"<

37、 void GetPerimeter() { per=4*length; cout<<"Square's perimeter:"<GetPerimeter(); p->GetArea(); p=&s; p->GetPerimeter(); p-

38、>GetArea(); } 4、 #include template T min(T a,T b) { return a>a; if(a<0||a>100) { cout<<"请重新输入"<>a; } } private:T a; }; void main() { input a; } (此文档部分内容来源于网络,如有侵权请告知删除,文档可自行编辑修改内容,供参考,感谢您的配合和支持) 编辑版word

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服