Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.76
dreeqa
0 / 0 / 0
Регистрация: 17.01.2011
Сообщений: 11
#1

Лабораторная работа - C++

18.01.2011, 18:25. Просмотров 2487. Ответов 2
Метки нет (Все метки)

Есть условие лабораторной работы...ПОМОГИТЕ ПОЖАЛУЙСТА!!!!завтра сдавать,а я не знаю как делать.

ШАБЛОНЫ ФУНКЦИЙ И КЛАССОВ
Краткие теоретические сведения.
Шаблон функции.
Шаблон функции (иначе параметризированная функция) определяет общий набор операций (алгоритм), которые будут применяться к данным различных типов. При этом тип данных, над которыми функция должна выполнять операции, передается ей в виде параметра на стадии компиляции.
В С++ параметризированная функция создается с помощью ключевого слова template. Формат шаблона функции:
template <class тип_данных> тип_возвр_значения
имя_функции(список_параметров){тело_функции}
Основные свойства параметров шаблона функции.
 Имена параметров шаблона должны быть уникальными во всем определении шаблона.
 Список параметров шаблона не может быть пустым.
 В списке параметров шаблона может быть несколько параметров, и каж-дому из них должно предшествовать ключевое слово class.
 Имя параметра шаблона имеет все права имени типа в определенной шаблоном функции.
 Определенная с помощью шаблона функция может иметь любое количество непараметризированных формальных параметров. Может быть непараметризированно и возвращаемое функцией значение.
 В списке параметров прототипа шаблона имена параметров не обязаны совпадать с именами тех же параметров в определении шаблона.
 При конкретизации параметризованной функции необходимо, чтобы при вызове функции типы фактических параметров, соответствующие одинаково параметризованным формальным параметрам, были оди-наковы.

Шаблон класса.
Шаблон класса (иначе параметризованный класс) используется для построения родового класса. Создавая родовой класс, вы создаете целое семейство родственных классов, которые можно применять к любому типу данных. Таким образом, тип данных, которым оперирует класс, указывается в качестве параметра при создании объекта, принадлежащего к этому классу. Подобно тому, как класс определяет правила построения и формат отдельных объектов, шаблон класса определяет способ построения отдельных классов. В определении класса, входящего в шаблон, имя класса является не именем отдельного класса, а параметризованным именем семейства классов.
Общая форма объявления параметризованного класса:
template <class тип_данных> class имя_класса { . . . };

Основные свойства шаблонов классов.
 Компонентные функции параметризованного класса автоматически являются параметризованными. Их не обязательно объявлять как параметризованные с помощью template.
 Дружественные функции, которые описываются в параметризованном классе, не являются автоматически параметризованными функциями, т.е. по умолчанию такие функции являются дружественными для всех классов, которые организуются по данному шаблону.
 Если friend-функция содержит в своем описании параметр типа параметризованного класса, то для каждого созданного по данному шаблону класса имеется собственная friend-функция.
 В рамках параметризованного класса нельзя определить friend-шаблоны (дружественные параметризованные классы).
 С одной стороны, шаблоны могут быть производными (наследоваться) как от шаблонов, так и от обычных классов, с другой стороны, они могут использоваться в качестве базовых для других шаблонов или классов.
 Шаблоны функций, которые являются членами классов, нельзя описывать как virtual.
 Локальные классы не могут содержать шаблоны в качестве своих элементов.

Компонентные функции параметризованных классов.
Реализация компонентной функции шаблона класса, которая находится вне определения шаблона класса, должна включать дополнительно следующие два элемента:
 Определение должно начинаться с ключевого слова template, за которым следует такой же список_параметров_типов в угловых скобках, какой указан в определении шаблона класса.
 За именем_класса, предшествующим операции разрешения области видимости (:, должен следовать список_имен_параметров шаблона.
template<список_типов>тип_возвр_значения имя_класса<список_имен_ параметров> : : имя_функции(список_параметров){ . . . }

Порядок выполнения работы.
1. Создать шаблон заданного класса. Определить конструкторы, деструктор, перегруженную операцию присваивания (“=”) и операции, заданные в варианте задания.
2. Написать программу тестирования, в которой проверяется использование шаблона для стандартных типов данных.
3. Выполнить тестирование.
4. Определить пользовательский класс, который будет использоваться в качестве параметра шаблона. Определить в классе необходимые функции и перегруженные операции.
5. Написать программу тестирования, в которой проверяется использование шаблона для пользовательского типа.
6. Выполнить тестирование.

Методические указания.
1. Класс АТД реализовать как динамический массив. Для этого определение класса должно иметь следующие поля:
− указатель на начало массива;
− максимальный размер массива;
− текущий размер массива.
2. Для вода и вывода определить в классе функции input и print.
3. Чтобы у вас не возникало проблем, аккуратно работайте с константными объектами. Например:
 конструктор копирования следует определить так:
MyTmp (const MyTmp& ob);
 операцию присваивания перегрузить так:
MyTmp& operator = (const MyTmp& ob);
4. Для шаблонов множеств, списков, стеков и очередей в качестве стандарт-ных типов использовать символьные, целые и вещественные типы. Для пользова-тельского типа взять класс из лабораторной работы № 1.
5. Для шаблонов массивов в качестве стандартных типов использовать целые и вещественные типы. Для пользовательского типа взять класс “комплексное число” complex.
class complex
{
int re; // действительная часть
int im; // мнимая часть
public:
// необходимые функции и перегруженные операции
};
6. Реализацию шаблона следует разместить вместе с определением в заголовочном файле.
7. Тестирование должно быть выполнено для всех типов данных и для всех операций.
ВОТ само задание,что нужно сделать

17. Класс − стек stack. Дополнительно перегрузить следующие операции:
+ − добавить элемент в стек;
-- − извлечь элемент из стека;
bool() − проверка, пустой ли стек.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2011, 18:25
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Лабораторная работа (C++):

Лабораторная работа №1
Тема: Классы.Открытые и закрытые уровни доступа.Конструкторы.Инициализация...

Лабораторная работа
1. Задать структуру для хранения данных в соответствии с индивидуальным...

Лабораторная работа
Здравствуйте. Помогите, пожалуйста, решить две лабораторных работ с...

лабораторная работа
Дана матрица B(2,2). Вывести на печать транспонированную матрицу. нужна помощь...

Лабораторная работа
Помогите,пожалуйста. Юные программисты) Составить программу табуляции функции y...

Лабораторная работа
Здравствуйте! Условие: Передача данных по линии связи ограничена скоростью...

2
M@ker
-12 / 19 / 4
Регистрация: 17.12.2010
Сообщений: 355
18.01.2011, 22:23 #2
При таком объеме информации и читать не хочется ) А делать тем более.
0
patriot2008
72 / 72 / 10
Регистрация: 04.12.2008
Сообщений: 460
18.01.2011, 23:31 #3
много букв - и ни одной попытки решить задачи. будь хоть начало - уже помогли бы. а так...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2011, 23:31
Привет! Вот еще темы с решениями:

Лабораторная работа
Даны матрицы А(4х4) и В(4х4) Решение надо на С++ Никак не получается =\

Лабораторная работа
помогите прошу, вообще не получается

лабораторная работа
Помогите, пожалуйста, составить программу для лабораторной. Дан вектор,...

Лабораторная работа
Здравствуйте. Помогите студенту с решением задачек....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru