Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.76
dreeqa
0 / 0 / 0
Регистрация: 17.01.2011
Сообщений: 11
18.01.2011, 18:25     Лабораторная работа #1
Есть условие лабораторной работы...ПОМОГИТЕ ПОЖАЛУЙСТА!!!!завтра сдавать,а я не знаю как делать.

ШАБЛОНЫ ФУНКЦИЙ И КЛАССОВ
Краткие теоретические сведения.
Шаблон функции.
Шаблон функции (иначе параметризированная функция) определяет общий набор операций (алгоритм), которые будут применяться к данным различных типов. При этом тип данных, над которыми функция должна выполнять операции, передается ей в виде параметра на стадии компиляции.
В С++ параметризированная функция создается с помощью ключевого слова 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() − проверка, пустой ли стек.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2011, 18:25     Лабораторная работа
Посмотрите здесь:

C++ Лабораторная работа
Лабораторная работа C++
C++ Лабораторная работа №1
C++ лабораторная работа
лабораторная работа по С++ C++
Лабораторная работа №7 (на С) C++
Лабораторная работа по С C++
лабораторная работа C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M@ker
-73 / 19 / 1
Регистрация: 17.12.2010
Сообщений: 355
18.01.2011, 22:23     Лабораторная работа #2
При таком объеме информации и читать не хочется ) А делать тем более.
patriot2008
 Аватар для patriot2008
70 / 70 / 4
Регистрация: 04.12.2008
Сообщений: 463
18.01.2011, 23:31     Лабораторная работа #3
много букв - и ни одной попытки решить задачи. будь хоть начало - уже помогли бы. а так...
Yandex
Объявления
18.01.2011, 23:31     Лабораторная работа
Ответ Создать тему
Опции темы

Текущее время: 05:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru