Untitled Document

一：填空题
1. 类A继承类B，则A称为B的 ，B称为A的 。
2. 一个派生类继承多个基类称为 。
3. 三种继承访问说明符是： 、 、 ，如果基类的公有函数到继承类中仍是公有函数，应该使用 继承方式。
4. 、 和 是不能被派生类继承的。
5. 派生类中对基类的成员函数f进行覆盖，如果调用基类的成员f应该使用 。
6. 多态也称为 或 ，在C＋＋中是通过 实现的。
7. 通过在虚函数参数表后加 ，我们可以定义纯虚函数。含有纯虚函数的类我们称为 。
8. 在C++中，构造函数和析构函数， 不能定义为虚函数， 可以定义为虚函数。
9. 要达到动态联编的效果，基类和派生类的对应函数不仅名字相同，而且返回类型、参数 和 也必须相同。
10.C++编译器不允许用抽象类创造对象，它只能被其它类 。
二、判断题
1. 创建派生类对象时，先调用基类的构造函数，再调用派生类的构造函数，当销毁这个对象时顺序正好相反，先调用派生类的析构函数，再调用基类的析构函数。
2. 无论何时编译器都为类构造一个无参数的缺省的构造函数。
3. 无论什么方式的继承，基类的私有成员都不能被派生类访问。
4. 基类中定义了虚函数，在派生类中相应函数会自动变成虚函数。
5. 要达到动态联编的效果，基类和派生类的对应函数不仅名字相同，而且返回类型、参数个数和类型也必须相同。
6. 如果派生类没有实现虚函数，那么它将使用他的基类的虚函数。
7. 如果抽象类的虚函数在基类中被实现，我们就可以用它创建对象。
8. 我们不能用抽象类定义对象，但可以定义对象的指针。
9. 构造函数和析构函数可以是虚函数。
10. 虚析构函数的工作过程与普通虚函数不同，普通虚函数只是调用相应层上的函数，而虚析构函数是先调用相应层上的析构函数，然后逐层向上调用基类的析构函数。
三、简答题
1．实现一个类A，在A中有两个私有的整型变量a和b，定义构造函数对a和b进行初始化，并实现成员函数geta（）取得a的值和getb（）取b的值。实现类B从A继承，覆盖geta（），使其返回a的2倍。
2．在上题中类A和B的构造函数和析构函数中加入输出语句，观察构造函数和析构函数的调用顺序。
3．在上题中定义一个基类A的指针，使他指向派生类B的对象，使用A的指针调用geta（）函数，观察结果。
4．将类A的geta（）定义为虚函数，重复第五题，观察结果。
5．生成一个Object抽象类，在其中声明CalArea（）、IsIn（）纯虚函数，从Object派生出Rect类、Circle类，实现这些函数。