13.01.2015 Views

Объектно-ориентированное программирование на С++ - eDrive

Объектно-ориентированное программирование на С++ - eDrive

Объектно-ориентированное программирование на С++ - eDrive

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

119<br />

virtual Тип имяФункции ([ объявлениеПараметров ]) = 0;<br />

Такая функция полностью определяется в производных классах. Базовый<br />

класс, содержащий, по крайней мере, одну чистую виртуальную функцию,<br />

<strong>на</strong>зывается абстрактным классом (abstract class).<br />

Абстрактный класс может использоваться лишь в качестве базового<br />

класса для некоторого другого класса. Никакие объекты абстрактного класса<br />

не могут создаваться и<strong>на</strong>че, как подобъекты, представляющие базовый класс<br />

в объектах некоторого производного от него класса.<br />

class VNewMarket {<br />

public:<br />

virtual void Market1 () = 0;<br />

void Market2 () { ShowMessage ("Компьютеры"); }<br />

};<br />

class VNewSection: public VNewMarket {<br />

public:<br />

void Market1 () { ShowMessage ("SONY"); }<br />

void Market2 () { ShowMessage ("MACINTOSH"); }<br />

};<br />

void MainVirtual3 () {<br />

VNewMarket *m = new VNewSection; // ссылка <strong>на</strong> производный класс<br />

m–>Market1 ();<br />

// SONY<br />

m–>Market2 ();<br />

// Компьютеры<br />

}<br />

В следующем примере абстрактный класс управляет выводом <strong>на</strong> экран<br />

разнообразной информации:<br />

class VMan {<br />

protected: long course;<br />

public: virtual AnsiString Out (AnsiString) = 0;<br />

};<br />

class VStudent: public VMan {<br />

protected:<br />

_ _int64 group, fac;<br />

public:<br />

VStudent (_ _int64 x) {<br />

group = x; fac = group / 100 % 10; course = 10 – x / 1000;<br />

if (course < 1 || course > 5) course = 0;<br />

}<br />

AnsiString Out (AnsiString name) {<br />

return "\nСтудент " + name + " факультета " + AnsiString (fac)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!