Объектно-ориентированное программирование на С++ - eDrive
Объектно-ориентированное программирование на С++ - eDrive
Объектно-ориентированное программирование на С++ - eDrive
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
118<br />
Более сложный пример помогает разобраться с различными вариантами<br />
<strong>на</strong>следования:<br />
AnsiString result;<br />
class VProcessor {<br />
int frequency;<br />
public:<br />
VProcessor (int j = 100): frequency (j) {}<br />
virtual void Out () { result += "\nПроцессор " + AnsiString (frequency); }<br />
void Out (AnsiString s) { result += "\n" + s + AnsiString (frequency); }<br />
};<br />
class VComputer: public VProcessor {<br />
int hardDisk;<br />
public:<br />
VComputer (int j = 800): VProcessor (133), hardDisk (j) {}<br />
void Out () { result += "\nКомпьютер " + AnsiString (hardDisk); }<br />
int Out (AnsiString s) {<br />
result += "\n" + s + AnsiString (hardDisk);<br />
return hardDisk;<br />
}<br />
};<br />
void MainVirtual2 () {<br />
VProcessor intel, motorola (150), *cirix;<br />
VComputer ibm, macintosh (200),<br />
*proforma = &macintosh;<br />
intel.Out (); // Процессор 100<br />
motorola.Out (); // Процессор 150<br />
ibm.Out (); // Компьютер 800<br />
macintosh.Out (); // Компьютер 200<br />
intel.Out ("Intel "); // Intel 100<br />
motorola.Out ("Motorola "); // Motorola 150<br />
ibm.Out ("IBM "); // IBM 800<br />
macintosh.Out ("Macintosh "); // Macintosh 200<br />
cirix = proforma;<br />
cirix–>Out (); // Компьютер 200<br />
cirix–>Out ("Macintosh "); // Macintosh 133<br />
proforma–>Out (); // Компьютер 200<br />
proforma–>Out ("Macintosh "); // Macintosh 200<br />
ShowMessage (result);<br />
}<br />
Виртуаль<strong>на</strong>я функция, не определен<strong>на</strong>я в базовом классе, <strong>на</strong>зывается<br />
чистой виртуальной функцией (pure virtual function) и объявляется как