27-复习题
14.6 复习题
1.以A栏的类为基类时,B栏的类采用公有派生还是私有派生更合适。
A B
class Bear class PolarBear
class Kitchen class Home
class Person class Programmer
class Person class HorseAndJockey
class Person, class Automobile class Driver
2.假设有下面的定义:
class Frabjous {
private:
char fab[20];
public:
Frabjous(const char * s = "C++") : fab(s) { }
virtual void tell() { cout << fab; }
};
class Gloam {
private:
int glip;
Frabjous fb;
public:
Gloam(int g = 0, const char * s = "C++");
Gloam(int g, const Frabjous & f);
void tell();
};
假设Gloam版本的tell()应显示glip和fb的值,请为这3个Gloam方法提供定义。
3.假设有下面的定义:
class Frabjous {
private:
char fab[20];
public:
Frabjous(const char * s = "C++") : fab(s) { }
virtual void tell() { cout << fab; }
};
class Gloam : private Frabjous{
private:
int glip;
public:
Gloam(int g = 0, const char * s = "C++");
Gloam(int g, const Frabjous & f);
void tell();
};
假设Gloam版本的tell()应显示glip和fab的值,请为这3个Gloam方法提供定义。
4.假设有下面的定义,它是基于程序清单14.13中的Stack模板和程序清单14.10中的Woker类的:
Stack<Worker *> sw;
请写出将生成的类声明。只实现类声明,不实现非内联类方法。
5.使用本章中的模板定义对下面的内容进行定义:
- string对象数组;
- double数组栈;
- 指向Worker对象的指针的栈数组。
程序清单14.18生成了多少个模板类定义?
6.指出虚基类与非虚基类之间的区别。