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

UptoLike

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

инициализатора структуры или операторов присваивания неприем-
лемо,так как здесь участвует лишь один экземпляр структуры.Для
преоделения этого недостатка напишем функцию инициализации,
которой любой экземпляр структуры передается как параметр:
void InitPoint(Point& Target,int NewX,int NewY,/*-инициа- */
Boolean NewVisiable)/* лизация полей Point;*/
{ Target.x =NewX;
Target.y =NewY;
Target.Visiable=NewVisiable;
} /*-конец определения функции инициализации Point; */
Данная функция построена для обслуживания структуры Point,
чтобы произвести инициализацию любого экземпляра этой структу-
ры.Учитывая эти обстоятельства и стремясь к компактности,ав-
торы языка С++ предложили следующие усовершенствования:
1)для функций инициализации объектов некоторого типа исполь-
зовать имя этого типа ;
2)параметр для передачи имени экземпляра типа исключить из
заголовка функции инициализации;
3)заменить в теле функции ссылку на экземпляр указателем
this, который при использовании функции всегда устанавливается
на нужный экземпляр типа;
4)не указывать тип возвращаемого значения.
Функция инициализации экземпляров структуры Point теперь
выглядит следующим образом:
Point(int NewX,int NewY,Boolean NewVisible)
{ this->x =NewX;
this->y =NewY;
this->Visible=NewVisible;
} /*-конец определения функции инициализации Point; */
Для большей компактности указатель на текущий экземпляр ти-
па можно опускать.В языке С++ требуется перед именем функции,
определяемой вне структуры,указывать имя той структуры,в те-
ло которой она включается.Так что окончательно получаем:
11
инициализатора структуры или операторов присваивания неприем-
лемо,так как здесь участвует лишь один экземпляр структуры.Для
преоделения этого недостатка напишем функцию инициализации,
которой любой экземпляр структуры передается как параметр:


  void InitPoint(Point& Target,int NewX,int NewY,/*-инициа- */
                    Boolean NewVisiable)/* лизация полей Point;*/
       { Target.x         =NewX;
         Target.y         =NewY;
         Target.Visiable=NewVisiable;
       } /*-конец определения функции инициализации Point;     */


  Данная функция построена для обслуживания структуры Point,
чтобы произвести инициализацию любого экземпляра этой структу-
ры.Учитывая эти обстоятельства и стремясь к компактности,ав-
торы языка С++ предложили следующие усовершенствования:
  1)для функций инициализации объектов некоторого типа исполь-
зовать имя этого типа ;
  2)параметр для передачи имени экземпляра типа исключить из
заголовка функции инициализации;
  3)заменить в теле функции ссылку на экземпляр указателем
this, который при использовании функции всегда устанавливается
на нужный экземпляр типа;
  4)не указывать тип возвращаемого значения.
  Функция инициализации экземпляров структуры Point теперь
выглядит следующим образом:


  Point(int NewX,int NewY,Boolean NewVisible)
       { this->x         =NewX;
         this->y         =NewY;
         this->Visible=NewVisible;
       } /*-конец определения функции инициализации Point;     */


  Для большей компактности указатель на текущий экземпляр ти-
па можно опускать.В языке С++ требуется перед именем функции,
определяемой вне структуры,указывать имя той структуры,в те-
ло которой она включается.Так что окончательно получаем:


                               11