
- •15. Определение новых функций. Способы размещения программы.
- •16.Передача параметров в функции.
- •17.Полиморфизм и перегрузка функции.
- •19. Потоки ввода/вывода.Описание.
- •28. Связные списки
- •29. Понятие рекурсии, принцип выполнения, примеры
- •30. Сравнения, рекурсивного и циклического выполнения функции
- •34.Перегрузка оператора
34.Перегрузка оператора
Средства перегрузки операторов полезны тогда, когда желательно, чтобы пользовательские типы данных в исходном тексте программ выглядели в выражениях подобно встроенным типам Си++. Передача по ссылке обеспечивает эффективный вызов функции, без копирования параметров, а константное описание защищает параметры от изменений. Правила размещения перегруженных операторов аналогичны правилам размещения функций: прототипы отдельно, определения отдельно (возможно, прототипы операторов расположены в заголовочном файле, а определения – в файле реализации). Аналогично арифметическим операторам, в Си++ допускается перегружать операторы потокового ввода/вывода ">>" и "<<"
35.Реализация стека с применением структуры , основные операции
Основные свойства стека:
1) Элементы добавляются или удаляются только сверху стека.
2) Для добавления элемента применяется функция "push()".
3) Для удаления элемента применяется функция "pop()
Реализация стека на основе статического массива struct Stack { double v[20]; int top; }; После описываем void push.. and double pop.
Реализация стека с использованием динамической памяти Для реализации стека можно предложить структуру, позволяющую создать стек произвольного размера и работать с элементами стека через указатели. struct DStack { double* bottom; double* top; int size ;}; Массив для хранения элементов стека должен создаваться динамически на этапе инициализации. Два внутренних указателя стека ссылаются на начало массива ("bottom") и на элемент-верхушку стека ("top").
Для работы со стеком целесообразно сделать несколько обслуживающих функций:
Инициализация стека. bool DStack_init( DStack& s, int N ); создает целочисленный массив размером N
Добавление элемента в стек. bool DStack_push( DStack& s, double val ); Помещает элемент на верх стека. Возвращает "true", если это удалось сделать, или "false", если стек целиком заполнен.
Извлечение верхнего элемента. double DStack_pop( DStack& s ); Возвращает верхний элемент из стека или возвращает 0.0 (или некоторое другое специально оговоренное значение), если стек пуст.
Проверка на пустоту. bool DStack_empty( Dstack& s ); Возврашает "true", если стек пуст, или "false" в противном случае.
Удаление стека. void DStack_free(); Освобождает динамическую память, занятую при создании стека.
36. Операции над символьными типами данных. Понятие таблицы ANC