- •Вопрос 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. Природа классов. Отношения между классами. Типы отношений.
Вопрос 34. Классы и объекты потоков ввода/вывода. Иерархия потоковых классов.
Система ввода/вывода основ на потоках. Поток – абстрактное понятие, означ перенос информации от источника к приёмнику.
Библиотека iostream содержит много классов для обработки широкого спектра операций ввода-вывода. Класс istream поддерживает операции по вводу потоков. Класс ostream поддерживает операции по выводу потоков. Класс iostream поддерживает оба типа операций: и ввод и вывод потоков.
Класс istream и класс ostream являются производными классами прямого наследования базового класса ios. Класс iostream является производным классом множественного наследования классов istream и ostream.
Перегрузка операций обеспечивает удобную запись операций ввода-вывода. Операция сдвига влево («) перегружена для обозначения вывода в поток и называется операцией поместить в поток. Операция сдвига вправо (») перегружена для обозначения ввода потока и называется операцией взять из потока. Эти операции применяются к объектам стандартных потоков cin, cout, cerr и clog и обычно используются также с объектами потоков, тип к-ых определен пользователем.
Операция взять из потока означает, что значение целой переменной grade (если полагать, что переменная grade объявлена как целая типа int) должно быть введено из объекта cin в память: cin » grade;
не требуется никакой дополнительной информации для использования операции взять из потока.
Операция поместить в поток, показанная в приведенном ниже операторе, означает, что значение целой переменной grade должно быть выведено из памяти на стандартное устройство вывода: cout « grade;
никакой дополнительной информации не требуется.
Объект cerr класса ostream «привязан» к стандартному устройству вывода сообщений об ошибках. Выводимые потоки данных для объекта cerr являются небуферизованными.
Объект clog класса ostream «привязан» тоже к стандартному устройству вывода сообщений об ошибках. Выводимые потоки данных для объекта clog являются буферизованными.
При обработке файлов используются классы:
класс ifstream, выполняющий операции ввода из файлов;
класс ofstream, выполняющий операции вывода в файлы;
класс fstream, предназначенный для операций ввода-вывода файлов.
Класс ifstream наследует классу istream, класс ofstream наследует классу ostream, а класс fstream — классу iostream. В большинстве систем в полной иерархии классов потоков ввода-вывода поддерживается еще множество других классов.
Вопрос 35, 38. Предопределённые потоковые объекты. Состояние ошибок потока.
Состояние потока может быть проверено с помощью битов класса ios — базового для классов istream, ostream и iostream, которые использe.ncz для ввода-вывода.
Ошибки потока:
Бит eofbit для входного потока автоматически устанавливается, когда встречается признак конца файла. Используется для определения в потоке признака конца файла. Вызов cin.eof() (возвращает true, если в cin встретился признак конца файла, и false в противном случае).
Бит failbit устанавливается для потока, если в потоке происходит ошибка форматирования, но символы не утеряны (обычно данные можно восстановить) - пользовательская ошибка.
Бит badbit устанавливается для потока при возникновении ошибки, к-ая приводит к потере данных (выполнена недопустимая опер-я).Данные обычно не восстанавливаются.
Бит goodbit устанавливается для потока, если ни один из битов eofbit, failbit и badbit не установлен (нет никаких ошибок). Возвращает true, если для данного потока все ф-ции bad, fail и eof должны вернуть false.
Функция-элемент rdstate возвращает состояние ошибки потока (читает состояние потока).
Функция-элемент clear обычно используется для восстановления потока в нормальное состояние (когда функция-элемент good возвращает истину), при котором можно продолжать операции ввода-вывода данного потока. По умолчанию параметр функции clear принимает значение ios::goodbit, так что оператор
cin.clear(); очистит входной поток cin и установит goodbit для этого потока. Оператор cin.clear(ios::failbit)устанавливает failbit.
Функция-элемент operator! возвращает истину в том случае, если установлен либо badbit, либо failbit, либо оба вместе. Функция-элемент operator void * возвращает false, если установлен либо badbit, либо failbit, либо оба вместе. Эти функции полезны при обработке файлов и проверке истинности или ложности условия в структуре выбора или в структуре повторения.
Hardfail – неисправимая ошибка
Функция eof() возвр int, если eofbit
Fail() возвр истину если Failbit Badbit Hardfail
Good() возвр истину если ошибок не было