当前位置:嗨网首页>书籍在线阅读

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.指出虚基类与非虚基类之间的区别。