- •1.Конструктор копирования
- •2.Перегрузка переопределение функц
- •3.Перегрузка бинарных операторов
- •4.Перегрузка унарных операторов
- •5.Static- и Const- компоненты класса
- •6.Организация внешн.Доступа к лок.Комп. Класса(Спецификатор friend)
- •7.Proxi-классы
- •8.Наследование простое
- •9.Множественное наследование
- •10.Виртуальные функции
- •11.Абстрактные классы
- •13.Шаблоны.Параметрезированные классы
- •12.Виртуальный деструктор
- •14.Совместное использование шаблонов и наследование
- •15.Реализация smart-указателя
- •16.Классы поддерживающие транзакцию
- •17.Преобразование типа.Явное преобразование типа
- •18.Преобразование типов определённых в программе
- •20.Строковые потоки,их свойства,назначение.
- •22.Организация файла последовательного доступа
- •24.Генерация исключений в конструкторах.Иерархия искл.В станд.Библиотеке
- •23.Организация файла произвольного доступа
- •25. Спецификации исключительных ситуаций
- •27. Исключительные ситуации.Основы обработки исключительных ситуаций
- •28. Задание собственного неожиданного обработчика
- •29. Исключительная ситуация, генерируемая оператором new
- •30. Перенаправление исключительных ситуаций
- •31.Категории итераторов.Основные итераторы
- •32. Категории итераторов.Основные итераторы
- •33.Пасивные и активные итераторы
- •34. Контейнеры последовательностей
- •35.Ассоциативные контейнеры
- •36.Адаптеры контейнеров
- •37.Патеррн (Абстрактная фабрика)
- •38.Патеррн (Строитель)
- •39. Патеррн (Адаптер)
- •40.Патеррн (Команда)
- •41.Спецификатор final в java
- •42.Вложенные и внутренние классы в java
- •43.Основы наследования в java
- •47.Абстрактные классы в java
- •44.Использование ключевого слова super в java
- •50.Интерфейсы в java
- •51.Множественное наследование в java
- •52.Конфликты имён при комбинировании интерфейсов в java
- •53.Расширение интерфейса в java
- •54. Исключительные ситуации. Обработка исключений java
23.Организация файла произвольного доступа
Организация хранения информации в файле прямого доступа предполагает доступ к ней не последовательно от начала файла по некоторому ключу, а непосредственно, например по их порядковому номеру. Для этого требуется, чтобы все записи в файле были одинаковой длины.
Наиболее удобными для организации произвольного доступа при вводе−выводе информации являются компоненты-функции istream::read и ostream::write. При этом, так как функция write (read) ожидает первый аргумент типа const сhar* (char* ), то для требуемого приведения типов используется оператор явного преобразования типов:
istream& istream::read(reinterpret_cast<char *>(&s), streamsize n);
ostream& ostream::write(reinterpret_cast<const char *>(&s), streamsize n);
25. Спецификации исключительных ситуаций
Иногда возникает необходимость заранее указать, какие исключения мо-
гут генерироваться в той или иной функции. Это можно сделать с помощью так называемой спецификации исключительных ситуаций. Это средство позволяет указать в объявлении функции типы исключительных ситуаций, которые могут в ней генерироваться. Синтаксически спецификация исключения является частью заголовочной записи функции и имеет вид:
объявление функции throw(тип1, тип2,…){тело функции}
где тип1, тип2,… − список типов, которые может иметь выражение throw внутри функции. Если список типов пуст, то компилятор полагает, что функцией не будет выполняться никакой throw.
void fun(char c) throw();
Использование спецификации исключительных ситуаций не означает, что
в функции не может быть сгенерирована исключительная ситуация некоторого не указанного в спецификации типа. Просто в этом случае программа по умолчанию завершится, так как подобные действия приведут к вызову неожиданного обработчика. Таким образом, когда функция генерирует исключительную ситуацию, не описанную в спецификации, выполняется неожиданный обработчик
unexpected().
26.Организация ввода\вывода.Манипуляторы << и >>
В С++ используется достаточно гибкий способ выполнения операций
ввода−вывода классов с помощью перегрузки операторов << (вывода) и >> (ввода). Операторы, перегружающие эти операции, обычно называют инсертером и экстрактором. Для обеспечения работы с потоками ввода−вывода необходимо включить файл iostream, содержащий класс iostream. Этот класс является производным от ряда классов, таких как ostream, обеспечивающий вывод данных в поток, и istream − соответственно чтения из потока.
Для перевода курсора на новую строку надо вставлять манипулятор endl.
Манипуляторы hex и oct используются для вывода числовой информации в шестнадцатеричном или восьмеричном представлении.
cout <<hex << j <<' ' << j <<' '<<dec << j <<' ' << oct << j <<endl;
Манипуляторы изменяют значение некоторых переменных в объекте cout.
Есть манипуляторы, позволяющие выполнять форматирование
выводимой на экран информации setw(), setfill(' '). Синтаксис их показывает, что это функции. На самом деле это компоненты-функции
#include "iomanip.h"
void main(){ int a=0x11; double d=12.362;
cout << setw(4) << a << endl;
cout << setw(10) << setfill('*') << a << endl;
#include "iostream.h"
#include "iomanip.h"
void main()
{ char s[]="БГУиР факультет КСиС";
cout << setw(30) << setiosflags(ios::right) << s << endl;
cout << setw(30) << setiosflags(ios::left) << s << endl;
}