logo
ООП 2012

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

Помимо шаблона классов разрешается определять также шаблоны функций. Шаблон функции - это глобальная функция, определенная за пределами классов. В отличие от перегрузки функции, при которой для каждой сигнатуры создается своя функция, шаблон семейства функций определяется один раз, но это описание содержит параметры. Для задания параметров используется список. Описание шаблона функции:

template <список параметров шаблона> <описание функции>

Каждый формальный параметр обозначается ключевым словом class, за которым следует имя параметра (идентификатор). Например, описание шаблона функции, возвращающей значение максимальной из двух переменных, выглядит следующим образом:

template <class type> type max(type x, typey){return(x>y)?x:y;}

Использование шаблона функций позволяет передать в функцию в качестве параметра тип используемых в ней данных, а далее выполнять операции, предусмотренные алгоритмом над объектами заданных типов. Если для некоторых типов объектов операции, используемые в функции, не определены, следует ввести явное описание функции для этого типа. Например,

при использовании шаблона из предыдущего описания, если в качестве аргумента будут использованы строки, то, так как операция «>» для строк не определена, функция выдаст неправильный результат. Для того чтобы в качестве параметра шаблона можно было использовать строки, следует добавить явное описание функции-оператора «>» для строк

41) Организация библиотеки ввода/вывода С++. Операции извлечения и вставки.

Для организации ввода-вывода в Си++ можно использовать средства языка Си (conio.h). Однако в Си++ существует стандартная библиотека классов, ориентированная на организацию потокового ввода-вывода. Классы ввода-вывода образуют иерархию по принципу наследования. Базовым в этой иерархии является класс ios (исключение составляют лишь классы буферизированных потоков). В классе ios объединены базовые данные и методы для ввода-вывода. Прямыми потомками класса ios являются классы istream и ostream. Класс istream — это класс входных потоков; ostream — класс выходных потоков. Потомком этих двух классов является iostream — класс двунаправленных потоков ввода-вывода. С этим классом мы уже много раз имели дело, подключая его к программам с помощью головного файла iostream.h.

Объект cout принадлежит к классу ostream и представляет собой поток вывода, связанный с дисплеем. Объект cin принадлежит классу istream и является потоком ввода, связанным с клавиатурой. Оба эти объекта наследуются классом iostream.

Знак << обозначает перегруженную операцию вставки символов в поток вывода cout, а >> — знак операции извлечения из потока ввода cin.

42) Организация контейнеров на классах.

4 3) Организация контейнеров на шаблонах.

44) Программирование «под Windows» с использованием библиотеки Qt.

45) Организация интерфейса с использованием виджетов Qt.

Формы с использованием классов Qt могут создаваться вручную или с использованием специального пакета QtDesigner. При создании форм вручную программист кодирует текст программы, включая по мере необходимости вызовы объектов классов Qt. При использовании QtDesigner программист графически компонует внешний вид и связи сигналов и слотов формы, а компилятор интерфейса UIC формирует из полученного описания формы код на языке C++, обеспечивающий создание этой формы.