Объектно-ориентированное программирование на С++ - eDrive
Объектно-ориентированное программирование на С++ - eDrive
Объектно-ориентированное программирование на С++ - eDrive
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
};<br />
105<br />
public:<br />
VSecond (AnsiString a, AnsiString b): model (a), firm (b) {}<br />
friend class VFirst;<br />
class VFirst {<br />
VSecond set;<br />
public:<br />
VFirst (AnsiString a, AnsiString b): set (a,b) {}<br />
void Model () { ShowMessage (AnsiString (set.VSecond::model)); }<br />
void Firm () { ShowMessage (AnsiString (set.VSecond::firm)); }<br />
};<br />
void MainVFirstVSecond () {<br />
AnsiString mod = "ATT", frm = "IBM";<br />
VFirst device (mod, frm);<br />
device.Model ();<br />
// AT<br />
device.Firm ();<br />
// IBM<br />
}<br />
Используя дружественные функции, следует помнить, что «подобно<br />
оператору goto, друзья снижают <strong>на</strong>дежность программного кода... Потребность<br />
в объявлении одних классов друзьями других свидетельствует о плохо<br />
продуманной иерархии классов» [9]. Поэтому обращаться к помощи друзей<br />
следует лишь при крайней необходимости.<br />
Полиморфизм<br />
Полиморфизм как способность оди<strong>на</strong>ковых операторов и одноименных<br />
функций к избирательному (зависящему от типа) поведению реализуется в<br />
C++ в первую очередь через механизмы перегрузки (overloading) операторов<br />
и функций.<br />
Суть перегрузки операторов заключается в создании функцииоператора,<br />
использующей в качестве имени лексему operator и следующий за<br />
ней перегружаемый оператор. Объявление перегрузки а<strong>на</strong>логично объявлению<br />
обычной дружественной функции или член-функции класса:<br />
Тип operator з<strong>на</strong>кОперации ( [объявлениеПараметров] );<br />
Перегрузке могут подлежать все простые операторы, за исключением<br />
«.», «.*», «:», «sizeof», «::». Язык не позволяет задать для перегружаемого<br />
оператора иной символ, кроме тех, что определены в списке операторов.<br />
Нельзя изменять синтаксис использования оператора: у<strong>на</strong>рный оператор не