Программирование >>  Структурное программирование 

1 ... 163 164 165 [ 166 ] 167 168 169 ... 342


выделяет место для массива из 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) Ключевое слово указывает, что объект или переменную нельзя

изменить после задания им начальных значений.



1 ... 163 164 165 [ 166 ] 167 168 169 ... 342

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика