- •Вопрос 1. Ссылки и ссылочные параметры.
- •Вопрос 2. Перегрузка функций.
- •Вопрос 3. Шаблоны функций.
- •Вопрос 4. Использование const с указателями.
- •Вопрос 5. Область действия класса. Управление доступом к членам класса. Отделение интерфейса от реализации.
- •Вопрос 6. Понятие конструктора .Использование констр-ра с аргументами по умолчанию. Конструктор по умолчанию.
- •Вопрос 7. Понятие деструктора. Когда вызывается конструктор и деструктор.
- •Вопрос 8. Константные объекты и функции-члены.
- •Вопрос 9. Дружественные функции и друж. Классы.
- •Вопрос 10. Указатель this.
- •Вопрос 11. Операции new и delete.
- •Вопрос 12. Статические члены класса.
- •Вопрос 13. Понятие перегрузки операций.
- •Вопрос 14. Функции-операции как члены класса и как друж-е функции
- •Вопрос 15. Перегрузка операций ввода/вывода в поток, бинар и унар операций.
- •Вопрос 17. Перегрузка операций индексации массива.
- •Вопрос 18. Понятие наследования. Механизм ограничения доступа при наследовании.
- •Вопрос 19. Приведение типа указателя базового класса к указателю производного класса и наоборот.
- •Вопрос 21. Конструкторы и деструкторы в производных классах.
- •Вопрос 22. Неявное преобразование объектов производных классов в объекты базового класса.
- •Вопрос 23. Иерархия классов. Уровни наследования.
- •Вопрос 24. Множественное наследование.
- •Вопрос 25. Неопределённость при множ-м наследовании. Включение «классы в классах».
- •Вопрос 26. Понятие виртуальной функции.
- •Вопрос 27. Понятие полиморфизма.
- •Вопрос 28. Абстрактные и конкретные базовые классы.
- •Вопрос 29. Статическое и динамическое связывание.
- •Вопрос 30. Виртуальные деструкторы.
- •Вопрос 31. Шаблоны классов.
- •Вопрос 32. Шаблоны классов и пользовательские типы
- •Вопрос 33. Шаблоны и наследование.
- •Вопрос 34. Классы и объекты потоков ввода/вывода. Иерархия потоковых классов.
- •Вопрос 35, 38. Предопределённые потоковые объекты. Состояние ошибок потока.
- •Вопрос 36. Манипуляторы потоков.
- •Вопрос 37. Неформатированный ввод/вывод с помощью read/ write
- •Вопрос 38. Состояние ошибок ввода/вывода
- •Вопрос 39. Понятие исключения. Когда должна использоваться обработка исключений.
- •Вопрос 40. Генерация исключений. Повторная генерация исключений.
- •Вопрос 41. Перехват исключений.
- •Вопрос 42. Спецификация исключений. Обработка неожиданных исключений.
- •Вопрос 43. «Раскручивание» стека. Иерархия исключений стандартной библиотеки.
- •Вопрос 44. Конструкторы, деструкторы и исключения. Исключения и наследование.
- •Вопрос 45. Обработка неуспешного выполнения new.
- •Вопрос 46. Класс auto_ptr и динамич выделение памяти.
- •Вопрос 47. Static_cast, reinterpret_cast
- •Вопрос 48. Инфо о типе времени выполнения. Оператор dynamic_cast
- •Вопрос 49. Ключевое слово explicit.
- •Вопрос 50. Ключевое слово mutable.
- •Вопрос 51. Указатели на члены класса.
- •Вопрос 52. Множественное наследование. Виртуальные базовые классы.
- •Вопрос 53. Классы-контейнеры и классы-итераторы.
- •Вопрос 54. Понятие ооп. Три условия ооп-программы. Парадигмы ооп.
- •Вопрос 55.Основные составляющие объектного подхода: абстрагирование, инкапсуляция, модульность.
- •Вопрос 56. Основные составляющие объектного подхода: иерархия, типизация, полиморфизм.
- •Вопрос 57. Природа объекта. Состояние, поведение, идентичность объекта.
- •Вопрос 58. Отношения между объектами. Связи. Агрегация.
- •Вопрос 59. Природа классов. Отношения между классами. Типы отношений.
Вопрос 36. Манипуляторы потоков.
Манипуляторы потоков– инструкции форматирования, которые вставляются непосредственно в поток. Позволяют выполнять следующие операции: задание ширины полей, задание точности, установку и сброс флагов формата, задание заполняющего символа полей, сброс потоков, вставку в выходной поток символа новой строки и сброс потока, вставку нулевого символа в выходной поток и пропуск символов разделителей во входном потоке.
МП без аргументов:
Ws – пропуск пробелов при вводе
Dec, Oct,Hex - перевод в соотв СС
Endl – конец строки
Ends - вставка символа отсутствия инфы
Fflush – очистка
Lock – закрыть дескриптор файла unlock
МП c аргументами:
Setw(int) ширина поля
Setfill(char) устан символ заполнения
Setpresicion(int), precision - точность
Setiosflags(long) – устан флаг resetiosflags(long)
Манипуляторы потоков dec, oct, hex и setbase, задающие основание чисел
Целые числа обычно интерпретируются как десятичные (с основанием 10). Для изменения основания интерпретации целых чисел в потоке используют манипулятор hex, чтобы установить шестнадцатеричный формат представления элементов данных (с основанием 16), манипулятор oct - установить восьмеричный формат представления данных (с основанием 8). Dec - возврат к основанию потока 10.
Основание потока может быть также изменено с помощью манипулятора потока setbase, который принимает один целый параметр со значениями 10, 8 или 16, задающими соответствующие основания системы счисления.
Ширина поля (Setw(int), width)
Функция-элемент width класса ios устанавливает ширину поля и возвращает предыдущую ширину поля. Если обрабатываемые значения имеют меньше символов, чем заданная ширина поля, то для заполнения лишних позиций используются заполняющие символы: Если число символов в обрабатываемом значении больше, чем заданная ширина поля, то лишние символы не отсекаются и число будет напечатано полностью. Функция width, не имеющая аргументов, возвращает текущую установку.
Манипуляторы, определяемые пользователем
Можно создавать собственные манипуляторы потоков: bell, ret (возврат каретки), tab и endLine.
Вопрос 37. Неформатированный ввод/вывод с помощью read/ write
Istream &read(unsigned char *buf, int num);
Ostream &write(const unsigned char *buf, int num);
Неформатированный ввод-вывод выполняется с помощью ф-ций-эл-тов read и write. Каждая из них вводит или выводит некоторое число байтов в символьный массив в памяти или из него. Эти байты не подвергаются какому-либо форматированию. Они просто вводятся или выводятся в качестве сырых байтов данных. Например, вызов
char buffer = "ПОЗДРАВЛЯЕМ С ДНЕМ РОЖДЕНИЯ"; cout.write(buffer, 12);
выводит первые 12 байтов символьного массива buffer (включая нулевые символы, которые могут быть выведены в cout и завершить операцию «). Поскольку символьная строка указывает на адрес своего первого символа, то вызов
cout.write("ABCDEFGYIJKLMNOPQRSTUVWXYZ", 10);
отобразит на экране первые 10 символов алфавита.
Ф-я read читает n байт из потока и посылает их в буфер
Приведение типов в этих ф-ях необходимо для работы с буфером, к-ый не определён как массив символов. Если конец файла достигнут до того, как read доработала, то она прекр работу, в буфере стока символов, скока прочитано.
Функция-элемент read вводит в символьный массив указанное число символов. Если считывается меньшее кол-тво символов, то устанавливается флаг failbit.
Ф-ция-эл-т gcount сообщает о кол-ве символов, прочитанных последней операцией ввода.
Программа вводит 20 символов (из более длинной входной последовательности) в массив символов buffer с помощью ф-ции-эл-та read, определяет число введенных символов с помощью gcount и выводит символьный массив buffer с помощью write.
Const int SIZE = 80;
main ( ) {
char buffer [SIZE];
cout « "Введите предложение:" « endl;
cin.read (buffer, 20);
cout « endl «"Введенное предложение: " « endl;
cout. write (buffer, cin . gcount ( ) ) ;
cout « endl;
return 0;}