Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на вопросы все_001.doc
Скачиваний:
7
Добавлен:
25.09.2019
Размер:
238.59 Кб
Скачать

38. Файловые потоки.

Файловые потоки библиотеки ввода-вывода реализуют объектно-ориентированную методику работы с дисковыми файлами. Имеется три класса таких потоков:

  • ifstream специализирован для ввода из дисковых файлов.

  • of stream специализирован для записи дисковых файлов.

  • fstream управляет как вводом, так и записью на диск.

Эти классы выводятся соответственно из istream, ostream и iostream. Таким образом, они наследуют все их функциональные возможности (перегруженные операции << и>>” для встроенных типов, флаги форматирования и состояния, манипуляторы и т. д.).

Чтобы работать с файловым потоком, нужен, во-первых, объект потока, а во-вторых, открытый файл, связанный с этим объектом.

Конструирование объекта потока

Каждый из трех классов файловых потоков имеет четыре конструктора.

  • Конструктор, создающий объект без открытия файла:

ifstream () ;

of stream();

fstream () ;

  • Конструктор, создающий объект, открывающий указанный файл и закрепляющий этот файл за потоком. Аргументами являются имя файла, режим открытия и режим защиты (в Windows не используется):

if stream(const char *name,

int mode = ios::in, long prot = 0666);

ofstream(const char *name,

int mode = ios::out, long prot = 0666);

fstream (const char *name, int mode, long prot = 0666);

  • Конструктор, создающий объект и связывающий с ним уже открытый файл. В качестве аргумента передается дескриптор файла:

ifstreamfint file);

ofstream(int file);

fstream (int file) ;

  • Конструктор, создающий объект и связывающий с ним уже открытый файл; объект ассоциируется указанным буфером:

ifstream(int file, char *buf, int len)

of stream(int file, char *buf, int len)

fstream (int file, char *buf, int len)

39. Шаблоны функций

Шаблоны функций позволяют работать с типами данных, задаваемых как параметр. Таким образом , одну и ту же функцию можно использовать для разных типов данных.

Формат определения шаблонной функции начинается ключевым словом template

template <class Ttype> тип имя_функции(список_параметров)

{

// тело функции

}

Шаблонная функция может иметь несколько обобщенных типов данных.

Шаблон функции тоже можно перегружать.

В шаблонных функциях можно использовать стандартные параметры.

Шаблонная функция должна всегда выполнять одно и то же действие, Различие толь в типе данных!

40. Шаблоны классов.

В шаблоне классов тип обрабатываемых в нем данных задается как параметр.

template <class Ttype> class имя_класса

{

// . . .

}

Конкретный экземпляр шаблонного класса создается след. образом:

Имя_класса <тип> имя_объектаж

Шаблонный класс может иметь несколько обобщенных типов данных.

В шаблонных классам можно использовать аргументы, не являющиеся типами.

В шаблонных классам можно использовать аргументы по умолчанию.

template <class X=int> class myclass{ }? Т.е. если теперь при создании объекта класса myclass не будет указан тип, по умолчанию он будет – int

41. Обработка исключений. Общая характеристика.

Обработка исключений - это системные средства, с помощью которых программа может справиться с ошибками времени выполнения. Управление С++ механизмом исключений основывается на трех ключевых словах: try, catch и throw.

Суть обработки исключений в следующем: контролируемые программные инструкции помещаются в try-блок. Если исключение(ошибка) произошла, она дает о себе знать выбросом определенной информации с помощью ключевого слова throw. Это выбрашенное исключение может быть перехвачено программным путем с помощью catch-блока и обработано соответствующим образом.