|
Программирование >> Структурное программирование
выделяет место для массива из 100 целых чисел и присваивает адрес начала массива указателю ptr. Этот массив может быть уничтожен оператором delete [ ] ptr; Статические данные-элементы имеют только одну копию для всех объектов класса и содержат информацию для всего класса . Объявление статического элемента начинается с ключевого слова static. Статические данные-элементы имеют областью действия класс. Статические элементы класса доступны через объект этого класса или по имени класса с использованием операции разрешения области действия (если этот элемент открытый). Функция-элемент может быть объявлена как static, если она не должна иметь доступ к нестатическим элементам класса. В отличие от нестатических функций-элементов статическая функция-элемент не имеет указателя this, потому что статические данные-элементы и статические функции-элементы существуют независимо от каких-либо объектов класса. Терминология бинарная операция разрешения области действия (::) вложенный класс деструктор деструктор по умолчанию динамические объекты друг класса дружественная функция инициализатор элемента итератор классы контейнеры композиция константная функция-элемент константный объект конструктор конструктор объекта-элемента конструктор по умолчанию область действия класс объект-элемент операция delete операция delete [ ] операция new операция доступа к элементу (.) операция доступа к элементу по указателю (->) принцип наименьших привилегий расширяемость языка спецификаторы (метки) доступа к элементам статическая функция-элемент статические данные-элементы сцепленные вызовы функций-элементов указатель this Типичные ошибки программирования 7.1. Описание константной функции-элемента, которая изменяет данные-элементы объекта. 7.2. Описание константной функции-элемента, которая вызывает неконстантную функцию-элемент. 7.3. Вызов неконстантной функции-элемента для константного объекта. 7.4. Попытка изменить константный объект. 7.5. Нет инициализаторов константных данных-элементов. 7.6. Не предусмотрен конструктор с умолчанием для объекта-элемента, когда для этого объекта элемента не задан инициализатор элементов. Это может привести к тому, что объект-элемент не будет инициализирован. 7.7. Попытка использовать операцию доступа к элементу (.) с указателем на объект (операцию доступа к элементу точка можно использовать только с объектом или со ссылкой на объект). 7.8. Смешивание способов динамического распределения памяти в стиле new-delete со стилем malloc-free: пространство, созданное с помоп];ью malloc, не может быть освобождено с помощью delete; объекты, созданные с помощью new, не могут быть уничтожены с помощью free. 7.9. Ссылка на указатель this внутри статической функции-элемента. 7.10. Объявление статической функции-элемента как const. Хороший стиль программирования 7.1. Объявляйте как const все функции-элементы, которые предполагается использовать с константными объектами. 7.2. Помещайте объявления дружественности первыми в классе непосредственно после его заголовка и не предваряйте их каким-либо спецификатором доступа к элементам. 7.3. Хотя программы на С-Ь-Ь могут поддерживать память, выделяемую с помощью malloc и уничтожаемую с помощью free, и объекты, создаваемые с помощью new и уничтожаемые с помощью delete, лучше использовать только new и delete. Советы по повышению эффективности 7.1. Инициализируйте объекты-элементы явно с помощью инициализаторов элементов. Это исключает накладные расходы связанные с повторной инициализацией объектов-элементов: первой при вызове конструктора с умолчанием объекта-элемента и второй при задании начальных значений объекта-элемента с помощью функции записи set . 7.2. С целью экономии памяти для каждой функции-элемента существует только одна копия на класс и эта функция-элемент вызывается каждым объектом данного класса. С другой стороны, каждый объект имеет свою собственную копию данных-элементов класса. 7.3. Если вам достаточно единственной копии данных, используйте для сокращения затрат памяти статические данные-элементы. Замечания по технике программирования 7.1. Объявление константного объекта помогает провести в жизнь принцип наименьших привилегий. Случайные попытки изменить объект отлавливаются во время компиляции и не вызывают ошибок во время выполнения. 7.2. Константная функция-элемент может быть перегружена неконстантным вариантом. Выбор того, какая из перегруженных функций-элементов будет использоваться, осуществляется компилятором автоматически в зависимости от того, был объявлен объект как const или нет. 7.3. Константные элементы класса (объекты и переменные ) должны получать начальные значения с помощью инициализаторов элементов. Присваивания недопустимы. 7.4. Одним из способов повторного использования программного обеспечения является композиция, когда класс включает в себя объекты других классов в качестве элементов. 7.5. Спецификаторы доступа к элементам private, protected и public не имеют отношения к объявлениям дружественности, так что эти объявления дружественности могут помещаться в любом месте в описании класса. 7.6. Некоторые члены сообщества объектно-ориентированного программирования считают, что дружественность портит скрытие информации и ослабляет значения объектно-ориентированного подхода к проектированию. 7.7. Статические данные-элементы и статические функции-элементы существуют и могут быть использованы, даже если не создано никаких объектов соответствующего класса. 7.8. Программист имеет возможность создавать новые типы, используя формализм классов. Эти новые типы можно применять так же, как и встроенные типы данных. Поэтому С++ является расширяемым языком. Несмотря на возможность легко расширять его с помощью новых типов, базовый язык сам по себе остается неизменным. Упражнения для самопроверки 7.1. Заполнить пробелы в следующих утверждениях: a) Для задания начальных значений постоянных элементов класса используется . b) Функция, не являющаяся элементом, которая должна иметь доступ к закрытым данным-элементам класса, должна быть объявлена как этого класса. c) Операция динамически выделяет память для объекта указанного типа и возвращает на этот тип. d) Константный объект должен быть ; он не может быть изменен после своего создания. е) элемент данных имеет одну копию для всех объектов класса. f) Функции-элементы объекта поддерживают указатель на объект, называемый указатель . g) Ключевое слово указывает, что объект или переменную нельзя изменить после задания им начальных значений.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |