Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Указатели на компоненты класса, статические поля и функции
Подготовка к работе. По указанной литературе и конспекту лекций повторить темы «Инкапсуляция», «Классы», «Указатели на компоненты классов», «Статические поля и функции». Разработать программу в соответствии с заданием к лабораторной работе.
Задание. 1. На основе класса, созданного в работе №1, разработать класс, содержащий, дополнительно к имеющимся полям и функциям: - поле, имеющее такой же тип, как массив в табл. 1; - статическое поле такого же типа; - статическую функцию, возвращающую по ссылке значение статического поля. 2. Изменить созданную в работе №1 функцию выделения памяти для массива так, чтобы в ней, кроме имеющихся действий, происходило увеличение на единицу значения статического поля. Изменить функцию освобождения памяти, так чтобы в ней происходило уменьшение на единицу значения статического поля. Остальные функции оставить без изменений для выполнения последующих работ. 3. Определить указатель на поля класса (для любого типа полей) и указатель на функции класса, имеющие тип возвращаемого значения void и пустой список аргументов. 4. Определить функцию main(), в которой создать объект разработанного класса и указатель на объект. Указателю присвоить адрес объекта. 5. Вызвать статическую функцию класса, не указывая объект, для которого она вызывается. Проконтролировать результат выполнения функции. 6. Вызвать для созданного объекта функцию выделения памяти, затем вызвать для этого же объекта статическую функцию. Проконтролировать результат, сделать выводы. 7. Присвоить указателю на поле класса адрес одного из полей, тип которого совпадает с типом указателя на поля. При возникновении ошибки компиляции изменить режим доступа к выбранному полю на открытый и повторить операцию. Сделать выводы. 8. Присвоить указателю на функции класса адрес функции ввода данных в массив. Вызвать эту функцию, используя указатель, для объекта класса. 9. Присвоить указателю на функции класса адрес функции вывода данных из массива. Вызвать эту функцию, используя указатель, для объекта класса. 10. Повторить пп. 8, 9 для указателя на объект. 11. Повторить п. 8 для функции освобождения памяти. 12. Вызвать для объекта статическую функцию. Проконтролировать результат, сделать выводы. 13. Используя возвращаемую статической функцией ссылку, присвоить значение статическому полю. Повторить п. 12. Сохранить файлы с тестом программы для следующих работ.
Контрольные вопросы. 1. Что такое указатели на поля класса? 2. Каков формат определения указателей на поля? 3. Где должно находиться определение указателя на поля? 4. Можно ли при определении указателя на компоненты класса инициализировать его? 5. Что такое указатели на функции класса? 6. Каков формат определения указателей на функции? 7. Чем формат определения указателей на функции отличается от формата определения указателей на поля? 8. Можно ли изменять значения указателей на компоненты класса после их инициализации? 9. Как использовать указатели на компоненты класса для объектов класса? 10. Как использовать указатели на компоненты класса для указателей на объекты класса? 11. Что такое статические поля класса? Какое количество статических данных каждого вида могут иметь все объекты класса? Какое количество обычных данных каждого вида могут иметь все объекты класса? 12. Какой режим доступа имеют статические компоненты класса? 13. Где должны находиться определения статических полей? 14. Что такое статические функции класса? Для чего они предназначены? Как можно ими пользоваться? 15. Чем отличаются статические функции класса от обычных функций класса? 16. Для чего предназначены операции «.*» и «-> *»?
Лабораторная работа №3
|