Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

polevoi_cpp_2013_spring_lecture_03

.pdf
Скачиваний:
10
Добавлен:
20.04.2015
Размер:
135 Кб
Скачать
☆

Указатель на константу и константный указатель

• указатель на константную переменную

const T* p = 0;

• константный указатель

/// д.б. инициализирован

T* const pC = &obj;

• константный указатель на константную переменную

/// д.б. инициализирован

const T* const pC = &obj;

16.03.2013

21

Передача и возвращение адресов (указатели и ссылки)

•позволяет избежать накладных расходов на копирование

•требует дополнительного контроля доступа и изменений

16.03.2013

22

Объект, указатель или ссылка?

•если тип не фундаментальный, используйте ссылку или указатель (избегайте лишних копирований)

•предпочитайте ссылки

•если объекта может не существовать, используйте указатель

•помните о константности

16.03.2013

23

Константность символьных массивов

•литералы – всегда const

•попытка изменения литерала может и пройти, но результат не определен

•нужна возможность изменения – используйте массив, а не литерал

16.03.2013

24

АТД

•абстрактный тип данных

–создание/уничтожение

–набор операций

•структура данных – реализация АТД

16.03.2013

25

Интерфейс

•семантическая и синтаксическая конструкция

•спецификация услуг

16.03.2013

26

АТД “число”

•создание

•уничтожение

•присвоение

•арифметические операции

–сложение, вычитание

–умножение, деление

•ввод и вывод

16.03.2013

27

АТД “динамический массив”

•создание

•уничтожение

•получение доступа к элементу по индексу

•получение размера

•изменение размера

16.03.2013

28

Динамический массив (интерфейс)

•Array – структура описатель (дескриптор)

•void create(Array& arr, const size_t size)

•void destroy(Array& arr)

•T& at(Array& arr, const size_t index)

•size_t size(const Array& arr)

•void setSize(Array& arr,

const size_t newSize)

16.03.2013

29

Динамический массив (дополнительные сервисы)

•void insert(SArray& arr, size_t pos, T val)

•void delete(SArray& arr, size_t pos)

•void sort(SArray& arr)

•void setPattern(SArray& arr, T pattern)

16.03.2013

30