
polevoi_cpp_2013_spring_lecture_03
.pdf
Указатель на константу и константный указатель
• указатель на константную переменную
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 |