Объектно-ориентированное программирование на С++ - eDrive
Объектно-ориентированное программирование на С++ - eDrive
Объектно-ориентированное программирование на С++ - eDrive
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)