1、HZAU-专业 C+作业 14(继承与多态性)判断题1. 派生类的构造函数的初始化列表中如果不写对基类构造函数的调用,则自动调用基类的拷贝构造函数。f 2. 在多继承情况下,派生类的构造函数中基类构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序。T True False3. 一个派生类不能作为基类被别的派生类继承。F True False4. 派生类的继承方式中有两种:公有继承和私有继承。F True False5. 在私有继承中,基类中只有公有成员对派生类是可见的。F True False6. 构造函数可以被继承。F True False7. 在公有继承中,基类的成员在派生类中都可以
2、直接使用。F True False8. 解决多继承下二义性问题的方法之一是使用作用域运算符。T True False9. 派生类中至少包含了它的所有基类的成员,在这些成员中可能有的是不可访问。T True False10. 虚函数是支持编译时的多态性。T True False11. 在 C+中,要实现动态联编,可以使用基类指针调用虚函数。 t True False12. 在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数返回值部分相同。 f True False13. 抽象类只能作为基类使用,其纯虚函数的实现由派生类来完成。 t True False14. 运算
3、符重载只可以是类的成员函数和友元函数,不可以是普通函数。t True False15. 静态联编和动态联编都是在编译时进行的,二者的区别仅是前者对非虚函数,后者对虚函数。t True False16. 动态联编指的是在运行期间来选择不同类的虚函数 t。 True False17. 一个抽象类中可以包含有多个纯虚函数,一个派生类中也可以包含多个虚函数。 t True False18. 如果派生类没有实现虚函数,那么它将使用他的基类的虚函数。t True False19. 含有纯虚函数的类称为抽象类,与抽象类相对应的是具体类。t True False20. 析构函数可以说明为虚函数,而构造函数说明
4、为虚函数没有意义 t。 True False选择题1. C+语言建立类族是通过( )实现的。 A. 类的嵌套 B. 虚函数 C. 类的继承 D. 抽象类2. 下列对基类和派生类关系的描述中,错误的是( )。 A. 派生类是基类的具体化 B. 派生类是基类的子集 C. 派生类是基类定义的延续 D. 派生类是基类的组合3. 下列对派生类的描述中,错误的是( )。 A. 一个派生类可以作为另一个派生类的基类B. 派生类至少有一个基类C. 派生类的缺省继承方式是 privateD. 派生类只继承了基类的公有成员和保护成员4. 下列说法中错误的是( )。 A. 公有继承时基类中的 public 成员在派
5、生类中仍是 public 的B. 公有继承时基类中的 private 成员在派生类中仍是 private 的C. 私有继承时基类中的 public 成员在派生类中是 private 的D. 保护继承时基类中的 public 成员在派生类中是 protected 的5. 下面叙述错误的是( )。 A. 对基类成员的访问能力在 private 派生类中和 public 派生类中是相同的B. 基类的 private 成员在 public 派生类中不可访问C. 基类中的 public 成员在 protected 派生类中是 protected 的D. 基类中的 public 成员在 protected
6、 派生类中仍然是 public 的6. 多继承的构造顺序可分为如下 4 步。 所有非虚基类的构造函数按照它们被继承的顺序构造;所有虚基类的构造函数按照它们被继承的顺序构造; 所有子对象的构造函数按照它们声明的顺序构造; 派生类自己的构造函数体;这 4 个步骤的正确顺序是( )。 A. B. C. D. 7. 下列虚基类的声明中,正确的是( )。 A. class virtual B: public AB. virtual class B: public AC. class B: public A virtualD. class B: virtual class A8. 下面( )的叙述不符合赋
7、值兼容规则。 A. 派生类的对象可以赋值给基类的对象B. 基类的对象可以赋值给派生类的对象C. 派生类的对象可以初始化基类的引用D. 派生类的对象的地址可以赋值给指向基类的指针9. 对于虚函数定义的调用( )。 A. 一定使用动态联编 B. 一定使用静态联编 C. 必须使用动态联编 D. 不一定使用动态联编10. 下列描述中,( )是抽象类的特征。 A. 可以说明虚函数 B. 可以定义友元函数 C. 可以进行构造函数 D. 不能说明其对象11. 关于纯虚函数和抽象类的描述中,错误的是( )。 A. 纯虚函数是一种特殊的虚函数,它没有具体的实现B. 抽象类是指具有纯虚函数的类C. 一个基类中说明
8、有纯虚函数,该基类的派生类一定不再是抽象类D. 抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出12. 如果一个类至少有一个纯虚函数,那么就称该类为( )。 A. 抽象类 B. 虚基类 C. 派生类 D. 以上都不对13. 以下( )成员函数表示纯虚函数。 A. virtual int vf(int); B. void vf(int)=0; C. virtual void vf()=0; D. virtual void vf(int) 14. 一个类的层次结构中,定义有虚函数,并且都是公有继承,在下列情况下,实现动态联编的是( )。 A. 使用类的对象调用虚函数B. 使用类名限定调用虚函
9、数,其格式如下::C. 使用构造函数调用虚函数D. 使用成员函数调用虚函数15. 下列关于动态联编的描述中,错误的是( )。 A. 动态联编是函数联编的一种方式,它是在运行时来选择联编函数的B. 动态联编又可称为动态多态性,它是 C+语言中多态性的一种重要形式C. 函数重载和运算符重载都属于动态联编D. 动态联编只是用来选择虚函数的程序设计题1. (5 分 )点-圆类(虚函数)题目描述下面是点-圆类层次继承中的虚函数,请填空补充完成下列程序。#includeusing namespace std;class Pointfloat x,y;public:Point()Point( (1) )x=
10、a;y=b;(2) double area()return 0.0;( 3 )double Pi=3.141593;class Circle:public Pointprivate:double Radius;public:Circle(double r)(4) ;virtual double area()return Pi*Radius*Radius;int main()Circle c(1);coutusing namespace std;class angle(1)hours,mins,secs;public:angle()(2)(int h,int m,int s)hours=h;mi
11、ns=m;secs=s;void show()coutusing namespace std;(1) petpublic:(2)void speak()coutusing namespace std;class A(1) a;public:A():a(9)(2) void print() constcoutprint();show(d1);show(d2);return 0;输入描述无输出描述略输入样例无输出样例9SS9S5. (3 分 )虚函数-程序填空题目描述在下面程序的横线处填上适当的内容,使程序执行后的输出结果为 25。#includeusing namespace std;class
12、 basepublic:int n;base((1))n=x;virtual void set(int m)n=m;coutset(1);pbase=(4) ;return 0;输入描述无输出描述略输入样例无输出样例256. (5 分 )汽车类题目描述一个汽车类 Vehicle,包含数据成员制造商 manufacturer、生产年份produce_year、价格 price。从 vehicle.类派生出小汽车类 car,car 类中新增加载客量 passenger_load。请完成些列程序。#include#includeusing namespace std;class Vehicleprotected:string manufacturer;int produce_year,price;public:Vehicle(string m,int pro,int pri)manufacturer=m;produce_year=pro;(1) ;void display()coutusing namespace std;(1)public:void print()coutprint();(2) ;delete pd;return 0;输入描述无输出描述略输入样例无输出样例BD