Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Дружественные функции класса
Как было отмечено ранее, механизм управления доступом позволяет выделить внутренние private, защищенные protected и общедоступные public компоненты классов. Причем внутренние компоненты локализованы в классе и не доступны извне, а защищенные – доступны только компонентным функциям класса и его наследникам. Такое ограничение доступа к внутренним и защищенным компонентам класса может оказаться неоправданно строгим. Оно может существенно сужать возможности наследования других классов от данного и сокращать количество вариантов его использования. Кроме того, бывают случаи, когда функции, не являющиеся компонентными, должны иметь возможность обращаться к внутренним компонентам класса. В такой ситуации класс может предоставить особые привилегии определенным внешним функциям или компонентным функциям другого класса. Эти функции получили название дружественных. По определению, дружественной функцией класса называется функция, которая, не являясь компонентом некоторого класса, имеет доступ ко всем его компонентам, в том числе внутренним. Функция не может стать другом класса «без его согласия». Для получения «прав друга» функция должна быть описана в теле класса со спецификатором friend. Именно при наличии такого описания класс предоставляет функции права доступа к защищенным и внутренним компонентам.
Следует отметить некоторые особенности дружественных функций. Дружественная функция при вызове не получает указатель this, поскольку не является компонентной. Объекты класса должны передаваться дружественной функции явно (через параметры). Так как дружественная функция не является компонентом класса, на нее не распространяется действие спецификаторов доступа public, protected, private. Поэтому место размещения прототипа дружественной функции внутри определения класса безразлично. Права доступа дружественной функции не изменяются и не зависят от спецификаторов доступа. Использование механизма дружественных функций позволяет упростить интерфейс между классами. Например, дружественная функция может получить доступ к внутренним и защищенным компонентам сразу нескольких классов. Тогда из этих классов можно убрать компонентные функции, предназначенные только для обеспечения доступа к «скрытым» компонентам. Поскольку ограничение доступа к дружественной функции не относится, работать она будет достаточно быстро, и написать ее не труднее, чем функцию доступа к обычной структуре С++.
Постановка задачи В данном задании была поставлена задача реализовать класс Directory, содержащий название родительского каталога, количество файлов в каталоге, список файлов в каталоге. Помимо этих переменных, для корректной работы программы мной были добавлены переменные содержащие путь каталога и вес каталога в байтах. Один элемент списка включает в себя информационную запись о файле, дату последнего изменения, признак выделения и признак удаления. Список файлов подразумевает информационную запись, содержащую поля: - имя файла. - Расширение. - дата и время создания. - атрибут «только чтение». - атрибут «скрытый». - атрибут «системный». - размер файла на диске. Как принято считать, для программы, работающие с каталогами необходима реализация добавления, удаления файлов каталога, именно это и было указано в задании. Помимо двух стандартных операций, указывается осуществить процесс поиска данных, а именно файлов каталога по следующим признакам: - по имени. - по расширению. - по дате создания. Основная задача программы, будет в осуществлении операции пересечения и объединения. При объединении новый каталог должен содержать без повторений все файлы, содержащиеся в обоих каталогах-
Отличительной четой в задании, является реализация конкретного объекта Group (группа), содержащего список файлов, из объекта типа Directory. С помощью которого должна быть возможность выбирать группу файлов по признаку удаления, по атрибутам, по дате создания. Для демонстрации работы с объектами требуется написать главную функцию. Объявление класса и реализация методов класса должны быть выполнены в отдельных файлах. Программа должна демонстрировать использование всех функций и методов. Программа должна загружать массивы из файла, сохранять изменения в файлах. Date: 2016-05-23; view: 416; Нарушение авторских прав |