第十三章 复习题答案
1.
基类的公有成员成为派生类的公有成员。基类的保护成员成为派生类的保护成员。基类的私有成员被基础,但不能直接访问。
2.
派生类不能继承构造函数,析构函数,赋值运算符和友元。
3.
若返回类型为void,则只能单个赋值,不能连续赋值。
若返回对象,则速度减慢,因为返回语句需要复制对象。
4.
按派生的顺序调用构造函数,最早的构造函数最先调用。调用析构函数的顺序相反,最早的析构函数最后调用。
5.
需要,每个类都必须要有自己的构造函数,可以为空。
6.
只调用派生类。只有在派生类没有重新定义方法或使用作用域解析运算符时,才调用基类方法。然而,应该将要重新定义的函数声明为虚函数。
7.
当派生类构造函数使用new或new[ ]运算符来初始化类的指针成员,即当默认赋值不正确时,应该重新定义赋值运算符。
8.
可以将派生类对象的地址赋给基类指针;显式转换情况下,才可以将基类对象的地址赋给派生类指针,然而不一定安全。
9.
类似8。
10.
C++允许基类引用指向从该基类派生而来的任何类型。
11.
按值传递对象将调用复制构造函数,由于形参是基类对象,所以将调用基类的复制构造函数。复制构造函数以基类引用为参数,该引用可以指向作为参数传递的派生对象。最终将生成一个新的基类对象,其成员对应于派生对象的基类部分。
12.
按引用传递对象,可以确保函数从虚函数受益。按引用传递可以节省内存和时间,尤其对于大型对象。按值传递对象的主要优点在于可以保护原始数据。
13.
a.基类的head( )函数
b.派生类的head( )函数
14.
不符合is-a关系,不能使用公有继承。