欢迎来到天天文库
浏览记录
ID:18309797
大小:47.00 KB
页数:6页
时间:2018-09-16
《第八章问题多态性、运算符重载、纯虚函数、抽象类》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、多态性、运算符重载、纯虚函数、抽象类8.3练习题1.什么是多态性?为什么说它是面向对象程序设计的一个重要机制?2.函数重载的含义是什么?定义重载函数时应注意些什么问题?3.运算符重载的含义是什么?是否所有的运算符都可以重载?4.运算符重载有哪两种形式?这两种形式有何区别?5.运算符重载函数使用关键字const说明后,是指什么不可改变?6.静态联编和动态联编的区别是什么?7.什么是虚函数?为什么要定义虚函数?它与动态联编有何关系?8.什么是纯虚函数?什么是抽象类?9.虚析构函数有什么作用?10.总结C++语言的多态性包含
2、哪些内容?8.4作业题一、选择填空对定义重载函数的下列要求中。()是错误的A.要求参数的个数不同B.要求参数中至少有一个类型不同C.要求参数个数相同时。参数类型不同D.要求函数的返回值不同2.下列函数中,()不能重载。A.成员函数B.非成员函数C.析构函数D.构造函数3.下列对重载函数的描述中,()是错误的。A.重载函数中不允许使用默认参数B.重载函数中编译系根据参数表进行选择C.不要使用重载函数来描述毫无相干的函数D.构造函数重载将会给初始化带来多种方式4.下列运算符中,()运算符不能重载。A.&&B.[]C.::D
3、.new5.下列关于运算符重载的描述中,()是正确的。A.运算符重载可以改变操作数的个数B.运算符重载可以改变优先级C.运算符重载可以改变结合性D.运算符重载不可以改变语法结构。6.运算符重载函数是()。A.成员函数B.友元函数C.内联函数D.带默认参数的函数7.关于动态联编的下列描述中,()是错误的。A.动态联编是以虚函数为基础的B.动态联编是在运行时确定所调用的函数代码的C.动态联编调用函数操作是用指向对象的指针或对象引用D.动态联编是在编译时确定操作函数的8.关于虚函数的描述中,()是正确的。A.虚函数是一个st
4、atic类型的成员函数B.虚函数是一个非成员函数C.基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数D.派生类的虚函数与基类的虚函数具有不同的参数个数和类型9.关于纯虚函数和抽象类的描述中,()是错误的。A.纯虚函数是一种特殊的虚函数,它没有具体的实现B.抽象类是指具有纯虚函数的类C.一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出10.下列描述中,()是抽象类的特性。A.可以说明虚函数B.可以进行构造函数重载C.可以定义友元函数D.不能说
5、明其对象二、判断下列描述的正确性,对者划√,错者划×1.函数的参数个数和类型都相同,只是返回值不同,这不是重载函数。2.重载函数可以带有默认值参数,但是要注意二义性。3.多数运算符可以重载,个别运算符不能重载,运算符重载是通过函数完现的。4.对每个可重载的运算符来讲,它既可以重载为友元函数,又可以重载为成员函数,还可以重载为非成员函数。5.对单目运算符重载为友元函数时,说明一个形参;重载为成员函数时,j式说明形参。6.重载运算符保持原运算符的优先级和结合性不变。7.虚函数是用virtual关键字说明的成员函数。8.构造
6、函数说明为纯虚函数是没有意义的。9.抽象类是指一些没有说明对象的类。10.动态联编是在运行时选定调用的成员函数的。三、分析下列程序的输出结果1#include<inostram.h>classB{public:B(inti){b=i+50;show();}B(){}Virtualvoidshow(){cout<<”B::show()called.”<<b<<endl;}Protected:intb:}classD:publicB{Public:D(inti):B(t){d=i十100;show();}D(){}void
7、show(){cout<<”DC::show(0called.”<<d<<endl;}protected:intd:};voidmain(){Dd1(108);}分析:该程序中定义了B类和D类两个类。其中,D类是公有继承B类的派生类。在主函数中,仅创建一个D类对象d1,于是调用D类的构造函数,先调用基类B的构造函数,给数据成员b初始化,又调用B类的show()函数,输出显示如下信息。B::show(0called.158接着执行派生类D的构造函数体,给数据成员d初始化,又调用D类的show()函数,输出显示如下信息。D
8、::show(0called.208请读者思考。将B类中show()函数说明为virtual函数时,输出结果会有变化吗?再将D类继承B类的方式改为私有,输出结果会有变化吗?为什么?2#includeclassB{public:B(){}B(inti){b=i;}Virtualvoidvirfun(){cou
此文档下载收益归作者所有