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

40. Пример описания класса на базе одиночного наследования.

#include <string.h>

#include <stdio.h>

#include <iostream.h>

//класс неарифметического типа

class COffice

{

private: char m_namedok[30]; //название документа

int m_date[3]; //дата подписания

int m_kode; //код документа

public: void to_show(); //вывод содержимого объекта

COffice(); //конструктор по умолчанию

COffice(char*name, int*date, int); //конструктор с параметрами

COffice ( const COffice&); //конструктор копирования

};

#include "office.h"

class NCoffice: public COffice

{

private: int m_number;

public: void TO_SHOW_N();

int to_getN();

int& NUMBER();

void to_set_number(int);

NCoffice();

NCoffice(char*,int*, int, int);

void to_show(); };

41. Функции-шаблоны. Назначение, описание, использование.

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

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

Объявление: template <class имя_типа1, …, class имя_типаN >

В угловых скобках < > указывается список формальных параметров шаблона. Имя_типа – параметр типа, который представляет собой идентификатор типа и используется для определения типа параметра в заголовке шаблонной функции, типа возвращаемого значения и типа переменных, объявляемых в теле функции.

За строкой template следует строка со стандартным объявлением функции, где в списке параметров используется как параметры типа, так и любые другие допустимые базовые или производные типы данных.

42. Пример описания и вызова функции-шаблон для суммирования элементов массива.

#include <iostream>

#include <iomanip>

using namespace std;

template <class A>

TO_SUM(A *x, int n)

{

A s=0;

for (int i=0; i<n; i++)

{

s=s+x[i];

}

cout<<setw(15)<<left<<"SUMMA of array s= "<<setw(5)<<right<<s<<endl<<endl;

}

43. Классы-шаблоны. Назначение, описание, использование.

Шаблон классов - параметризированный класс, на основе которого строят другие классы. Шаблон представляет правила конструирования каждого отдельного класса из множества допустимых этим шаблоном классов.

Шаблон классов представляет собой класс, в котором определены данные и методы, но фактический тип данных задается в качестве параметра при создании объекта класса.

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

Объявление:

template <class параметр_типа1, … , class параметр_типаN>

тип_функции имя_шаблона < параметр_типа1, … , параметр_типаN >

:: имя_функции (список параметров)

Объявление объекта шаблона класса:

имя_шаблона <параметр_типа1, … , параметр_типаN> идентификатор;

чаще всего шаблоны класса используются для программирования контейнерных классов (контейнеров), которые предназначены для хранения объектов других классов.

44. Пример описания класса-шаблона.

#include <iostream>

#include <iomanip>

using namespace std;

template <typename T>

class Vector

{

private: T m_x;

T m_y;

public: T getX();

T getY();

void to_show();

void to_sat(T thex, T they);

void SUMMA();

};

Vector<int> x1;

x1.to_sat(2,3);

x1.to_show();

x1.SUMMA();