    7:   private: 
    8:       char *name; 
    9:   public:                                    
    10:      Company (const char «s) {              
    11:           name = strdup(s);                               
    12:          cout « " In constructor for ";
    13:          Display();	
    14:       }                         
    15:      virtual ~Company() {                      
    16:          cout « " In destructor for ";   
    17:          Display();                                           
    18:          delete name;        
    19:
    20:       void Display(void) { cout « name «  '\n';   } 
    21:    }; 
    22:                                                        
    23:   class Jennys:   public Company {  
    24:   public:                                                   
    25:       Jennys():  Company(" Jenny's") { }  // Конструуктор
    26:    };                                                               
    27: 
    28:   class McDougles:  public Company { 
    29:    public: 
    30:       McDougles(): Company ('McDougles") { } 
    31:   };	
    32: 
    33:   class BurgerQueen: public Company { 
    34:   public: 
    35:       BurgerQueenQ:  CompanyC'BurgerQueen") { }	
    36:   };                 
    37:
    38:   class Bob	
    39:       :  virtual public Jennys,	
    40:          virtual public McDougles {	
    41:   };	
    42: 
    43:   class Ted                                     
    44:       :  virtual public McDougles,	
    45:          virtual public BurgerQueen { 
    46:    }; 
    47:                                
    48 :   class Alice   
    49:       :  virtual public Jennys,      
    50:           virtual public McDougles, 
    51:          virtual public BurgerQueen {	1 
    52:   }; 
    53: 
    54:   class Corporation	
    55:       :  virtual public McDougles,     
    56:           public Ted,	
    57:          public Alice {	
    58:   private:	
    59:       char *name;	
    60:   public: 
    61:      Corporation():  McDougles(), Ted(),  Alice() 
    62:           { name = "Conglomerate Industries";   } 
    63:      void Display(void) { cout « name « '\n';   } 
    64:   }; 
    65:                                               
    66:   main()                
    67:   { 
    68:       cout « "\nForming a corporation\n";	
    69:       Corporation *cp; 
    70:       cp = new Corporation; 
    71:       cp->Display(); 
    72:
    74:    } 

    Класс Company не изменился, в то время как в Jennys, McDougles, 
BurgerQuen, Bob, Ted и Alice, конечно, потребовались изменения для 
предупреждения в будущем наследования нескольких копий их базового 
класса-родителя. Например, Bob теперь объявлен следующим образом: 

    class Bob 
    : virtual public Jennys,	
       virtual public McDougles { 
    

    364 Часть III. Программирование на ANSI C++ 
