Объектно-ориентированный язык программирования С++ в примерах. Сивохин А.В. - 41 стр.

UptoLike

Составители: 

~Location() { } /*-пустой деструктор класса; */
virtual void Print() const=0;/*-чисто виртуаль- */
/* ная функция; */
};/*-конец определения базового класса позиция; */
class SymbolLocation:/*-символ и его позиция: */
public Location
{ char Symbol;/*-поле для записи символа; */
public: /*-открытая часть производного класса; */
SymbolLocation(int X,int Y,char Sym):
Location(X,Y) { Symbol=Sym;}
~SymbolLocation() { } /*-пустой деструктор; */
virtual void Print() /*-реализация функции; */
const { cout<<"\n"<<Symbol; }
};/*-конец определения 1-го производного класса; */
class StringLocation:/*-строка и ее начальная позиция: */
public Location
{ char* String;/*-указатель поля для строки; */
public: /*-открытая часть класса: */
StringLocation(int X,int Y,char* Str):
Location(X,Y) { String=Str; }/*-конструктор;*/
~StringLocation() { } /*-пустой деструктор; */
virtual void Print() /*другая реализация функции; */
const { cout<<"\n"<<String; }
};/*-конец определения 2-го производного класса; */
void Print(Location* ObjPtr) /*-вывод полиморфного объ- */
/* екта(символа или строки): */
{ ObjPtr->Print(); }
void Print(Location& ObjRef) /*-вывод полиморфного объ- */
/* екта(символа или строки): */
{ ObjRef.Print(); }
void main(void) /*-главная программа,использующая раз- */
/* личные объекты типов,производных от */
/* базового типа Location: */
41
      ~Location() { } /*-пустой деструктор класса;              */
       virtual void Print() const=0;/*-чисто виртуаль-          */
                                       /* ная функция;          */
     };/*-конец определения базового класса позиция;            */


class SymbolLocation:/*-символ и его позиция:                   */
                    public Location
     { char Symbol;/*-поле для записи символа;                  */
  public: /*-открытая часть производного класса;                */
        SymbolLocation(int X,int Y,char Sym):
              Location(X,Y) { Symbol=Sym;}
       ~SymbolLocation() { }    /*-пустой деструктор;           */
        virtual void Print() /*-реализация функции;             */
                               const { cout<<"\n"<Print(); }


void Print(Location& ObjRef) /*-вывод полиморфного объ-         */
                                /* екта(символа или строки): */
          { ObjRef.Print(); }


void main(void) /*-главная программа,использующая раз-          */
                /* личные объекты типов,производных от          */
                /* базового типа Location:                      */
                          41