в качестве виртуального базового класса



Листинг 7.4. Файл nixon.h. Объявление классов, версия 3

class Person

{ public:

Per son () {};

virtual "Person)) {};

virtual void speak(){ cout << "Beer";} И

class Republican : virtual public Person

{ public:

Republican)) {};

virtual ~Republican)) {};

};

class Quaker : virtual public Person

{

public:

Quaker)) {};

virtual ~Quaker)) .{};



}

class Republican_Quaker : public Republican, public Quaker

{

public:

Republican_Quaker { ) { } ;

virtual "Republican_Quaker( ) {};

}

Объявление Person в качестве виртуального базового класса для Republican и Quaker имеет и еще одно преимущество. Предположим, что нам нужно сделать так, чтобы класс Republican_Quaker отдавал предпочтение стилю поведения квакеров, а все другие были индифферентны к вопросам войны и мира и следовали линии поведения, определенной классом Person. Тогда, поскольку Person является виртуальным базовым классом, можно заставить доминировать Quaker::speak)) над Person::speak)) для класса Republican_Quaker (листинг 7.5).



Содержание раздела