Составители:
Рубрика:
18
Необходимо отметить, что метод класса нельзя вызвать независимо от объ-
екта. Если рассмотреть, например, тело функции InitMas, то можно заметить, что
эта функция изменяет значения компонентных данных n и mas. Однако нигде
внутри тела метода не определяется, с компонентами какого именно объекта
должна работать функция. Очевидно, что в теле класса это
и невозможно опреде-
лить, поскольку данный метод будет обрабатывать компонентные данные различ-
ных объектов. Привязка метода класса к конкретному объекту осуществляется в
момент вызова метода. Компонентные функции при их вызове неявно получают
дополнительный аргумент - указатель на переменную объектного типа, для кото-
рой вызвана функция, и в теле функции можно обращаться ко
всем компонентам
объекта
. Так, например, для вызова m.InitMas(4) компонентная функция InitMas
будет работать с компонентами объекта m, а для вызова m1.InitMas(5)- с компо-
нентами объекта m1.
Память под объект можно выделять динамически, что иллюстрируется сле-
дующим примером:
//Листинг3. Обращение к компонентам класса при динамическом выделении памяти
//под объект
main()
{ array *ptm;
ptm=new array;
ptm->InitMas(4); //можно также (*ptm).InitMas(4)
ptm->ReadMas();
ptm->WriteMas();
prm->DelMas();
}
3.2. Конструкторы и деструкторы
Приведенный в листинге 1 пример класса-массива обладает рядом недос-
татков. В частности, возможна такая работа с объектом:
//Листинг 4.Пример неверного обращения к методам класса «массив целых чисел»
//из листинга 1
main()
{ array m;
Необходимо отметить, что метод класса нельзя вызвать независимо от объ- екта. Если рассмотреть, например, тело функции InitMas, то можно заметить, что эта функция изменяет значения компонентных данных n и mas. Однако нигде внутри тела метода не определяется, с компонентами какого именно объекта должна работать функция. Очевидно, что в теле класса это и невозможно опреде- лить, поскольку данный метод будет обрабатывать компонентные данные различ- ных объектов. Привязка метода класса к конкретному объекту осуществляется в момент вызова метода. Компонентные функции при их вызове неявно получают дополнительный аргумент - указатель на переменную объектного типа, для кото- рой вызвана функция, и в теле функции можно обращаться ко всем компонентам объекта. Так, например, для вызова m.InitMas(4) компонентная функция InitMas будет работать с компонентами объекта m, а для вызова m1.InitMas(5)- с компо- нентами объекта m1. Память под объект можно выделять динамически, что иллюстрируется сле- дующим примером: //Листинг3. Обращение к компонентам класса при динамическом выделении памяти //под объект main() { array *ptm; ptm=new array; ptm->InitMas(4); //можно также (*ptm).InitMas(4) ptm->ReadMas(); ptm->WriteMas(); prm->DelMas(); } 3.2. Конструкторы и деструкторы Приведенный в листинге 1 пример класса-массива обладает рядом недос- татков. В частности, возможна такая работа с объектом: //Листинг 4.Пример неверного обращения к методам класса «массив целых чисел» //из листинга 1 main() { array m; 18
Страницы
- « первая
- ‹ предыдущая
- …
- 16
- 17
- 18
- 19
- 20
- …
- следующая ›
- последняя »