第十八章 18.3.1节练习

来源:互联网 发布:类似爱情2只有我知360 编辑:程序博客网 时间:2024/06/03 03:27

练习18.21

解释下列声明的含义,在它们当中存在错误吗?如果有,请指出来并说明错误的原因。

(a) class CADVehicle : public CAD, Vehicle {...};

(b) class DblList :  public List, public List {...};

(c) class iostream : public istream, public ostream {...};

解答:

(a)错误,基类Vehicle在继承的时候没有声明继承方式。

(b)错误,基类List再继承列表中出现了两次。

(c)正确


练习18.22

已知存在如下所示的类的继承体系,其中每个类都定义了一个默认构造函数:

class A{...};class B : public A{...};class C: public B{...};class X{...};class Y{...};class Z : public X, public Y{...};class MI : public C, public Z{...};

对于下面的定义来说,构造函数的执行顺序是怎样的?

MI mi;

解答:

A -> B -> C -> X -> Y -> Z -> MI

测试代码如下:

#include <iostream>using namespace std;class A{  public:    A(){cout<< "A" << endl;}};class B : public A{  public:    B(){cout<< "B" << endl;}};class C : public B{  public:    C(){cout<< "C" << endl;}};class X{  public:    X(){cout<< "X" << endl;}};class Y{  public:    Y(){cout<< "Y" << endl;}};class Z : public X, public Y{  public:    Z(){cout<< "Z" << endl;}};class MI : public C, public Z{  public:    MI(){cout<< "MI" << endl;}};int main(){  MI mi;}


0 0