ВУЗ:
Составители:
Рубрика:
эти поля.Открытая часть класса определяется после защищенной
(закрытой) части и начинается с ключевого слова public,за ко-
торым следует двоеточие.Обычно в открытой части записываются
только функции доступа.Порожденный класс получает доступ к
открытой части базового класса только после указания в его
определении слова public перед именем базового класса.Други-
ми словами,если это слово не задано,то порожденный класс ли-
шается какой бы то ни было возможности обращаться к полям
данных или использовать функции доступа базового класса.В
этом случае,доступ к полям и функциям базового класса обеспе-
чивается специальной идентификацией,когда к основному имени
добавляется префикс - имя базового класса и два двоеточия.
В рассмотренном примере был еще один недостаток,нарушающий
дисциплину объектно-ориентированного программирования:конст-
руктор порожденного класса Point производил инициализацию по-
лей базового класса.В языке C++ имеется для этих целей специ-
альный вызов конструктора базового класса в определении кон-
структора производного класса.Это обеспечивает гибкость про-
граммы,так как изменения в способе инициализации полей базо-
вого класса никак не отразятся на производных классах,которых
может быть несколько.
С учетом сделанных замечаний рассматриваемый пример приоб-
ретает следующий вид:
class Location /*-позиция: */
{ int x,y;/*-координаты точки экрана; */
public: /*-открытая часть класса: */
Location(int x,int y) /*-конструктор класса; */
{ this->x=x; /*-инициализация абсциссы; */
this->y=y; /*-инициализация ординаты; */
}
~Location() {} /*-пустой деструктор класса; */
int GetX() { return x; } /*-возвращает абсциссу; */
int GetY() { return y; } /*-возвращает ординату; */
void Print()/*-печать координат точек экрана; */
{ cout<<"\nx="<<x;/*-печать абсциссы; */
cout<<" y="<<y;/*-печать ординаты; */
}
};/*-конец определения класса позиция; */
15
эти поля.Открытая часть класса определяется после защищенной (закрытой) части и начинается с ключевого слова public,за ко- торым следует двоеточие.Обычно в открытой части записываются только функции доступа.Порожденный класс получает доступ к открытой части базового класса только после указания в его определении слова public перед именем базового класса.Други- ми словами,если это слово не задано,то порожденный класс ли- шается какой бы то ни было возможности обращаться к полям данных или использовать функции доступа базового класса.В этом случае,доступ к полям и функциям базового класса обеспе- чивается специальной идентификацией,когда к основному имени добавляется префикс - имя базового класса и два двоеточия. В рассмотренном примере был еще один недостаток,нарушающий дисциплину объектно-ориентированного программирования:конст- руктор порожденного класса Point производил инициализацию по- лей базового класса.В языке C++ имеется для этих целей специ- альный вызов конструктора базового класса в определении кон- структора производного класса.Это обеспечивает гибкость про- граммы,так как изменения в способе инициализации полей базо- вого класса никак не отразятся на производных классах,которых может быть несколько. С учетом сделанных замечаний рассматриваемый пример приоб- ретает следующий вид: class Location /*-позиция: */ { int x,y;/*-координаты точки экрана; */ public: /*-открытая часть класса: */ Location(int x,int y) /*-конструктор класса; */ { this->x=x; /*-инициализация абсциссы; */ this->y=y; /*-инициализация ординаты; */ } ~Location() {} /*-пустой деструктор класса; */ int GetX() { return x; } /*-возвращает абсциссу; */ int GetY() { return y; } /*-возвращает ординату; */ void Print()/*-печать координат точек экрана; */ { cout<<"\nx="<
Страницы
- « первая
- ‹ предыдущая
- …
- 13
- 14
- 15
- 16
- 17
- …
- следующая ›
- последняя »