Название: Вызов Функции
Вид работы: статья
Рубрика: Информатика и программирование
Размер файла: 13.49 Kb
Скачать файл: referat.me-140426.docx
Краткое описание работы: Вызов функции, то есть запись выражение (список_выражений), можно проинтерпретировать как бинарную операцию, и операцию вызова можно перегружать так же, как и другие операции.
Вызов Функции
Вызов функции, то есть запись выражение (список_выражений), можно проинтерпретировать как бинарную операцию, и операцию вызова можно перегружать так же, как и другие операции. Список параметров функции operator() вычисляется и проверяется в соответствие с обычными правилами передачи параметров. Перегружающая функция может оказаться полезной главным образом для определения типов с единственной операцией и для типов, у которых одна операция настолько преобладает, что другие в большинстве ситуаций можно не принимать во внимание.
Для типа ассоциативного массива assoc мы не определили итератор. Это можно сделать, определив класс assoc_iterator, работа которого состоит в том, чтобы в определенном порядке поставлять элементы из assoc. Итератору нужен доступ к данным, которые хранятся в assoc, поэтому он сделан другом:
class assoc {
friend class assoc_iterator;
pair* vec;
int max;
int free;
public:
assoc(int);
int& operator[](char*);
};
Итератор определяется как
class assoc_iterator{
assoc* cs; // текущий массив assoc
int i; // текущий индекс
public:
assoc_iterator(assoc& s) { cs = &s; i = 0; }
pair* operator()()
{ return (ifree)? &cs->vec[i++] : 0; }
};
Надо инициализировать assoc_iterator для массива assoc, после чего он будет возвращать указатель на новую pair из этого массива всякий раз, когда его будут активизировать операцией (). По достижении конца массива он возвращает 0:
main() // считает вхождения каждого слова во вводе
{
const MAX = 256; // больше самого большого слова
char buf[MAX];
assoc vec(512);
while (cin>>buf) vec[buf]++;
assoc_iterator next(vec);
pair* p;
while ( p = next() )
cout << p->name << ": " << p->val << "n";
}
Итераторный тип вроде этого имеет преимущество перед набором функций, которые выполняют ту же работу: у него есть собственные закрытые данные для хранения хода итерации. К тому же обычно существенно, чтобы одновременно могли работать много итераторов этого типа.
Конечно, такое применение объектов для представления итераторов никак особенно с перегрузкой операций не связано. Многие любят использовать итераторы с такими операциями, как first(), next() и last() (первый, следующий и последний).
Похожие работы
-
Операторы цикла
Для реализации циклических алгоритмов, т.е. алгоритмов, содержащих многократно повторяющиеся одинаковые операции, применяются специальные операторы цикла. В Пас-кале есть три вида циклов: FOR, WHILE и REPEAT.
-
Перегрузка операций
Настоящий класс ostream определяет операцию
-
Определяемое Преобразование Типа
Конструкторы. Операции Преобразования. Неоднозначности.
-
Основные операторы языка Turbo-Paskal. Процедуры и функции
Принцип работы основных операторов языка программирования Turbo-Paskal: оператор присваивания, выбора Case, безусловного перехода, цикла, уловный, составной. Формальное описание и вызов функции и процедуры. Требования к списку фактических параметров.
-
Задачи синтеза оптимальных систем управления
Сущность статистического синтеза: поиск и реализация оптимальных свойств (структуры и параметров) системы по заданным статистическим характеристикам входных воздействий. Методы статистической оптимизации. Постановка задачи Винера–Колмогорова и ее решение.
-
Система команд. Структура слова команд. Синтаксис команд. Группы команд
Типы команд, синтаксис ассемблера и код операции, по которому транслируется команда. Команды вычисления и непосредственной пересылки данных между регистрами. Поле для определения операции вычисления. Управление последовательностью выполнения программы.
-
Логические операторы VB
В Visual Basic можно выделить пять основных и важных логических операторов: And, Or, Not, Xor и Eqv.
-
Микроконтроллеры семейства MCS51 Intel
Инструкции MCS51 Intel Инструкции, модифицирующие флаги (1) Инструкция C OV AC Инструкция C OV AC CLR C ADDC CPL C SUBB ANL C,bit ANL C,/bit ORL C,bit ORL C, bit
-
Программа на языке Паскаль, реализующая операции над множествами
Объединение, пересечение, разность, симметричная разность и декартовое произведение множеств. Реализация на одном из языков программирования программы, способной выполнять операции над множествами. Список основных идентификаторов переменных и процедур.
-
Форматированный ввод
Лисповская функция чтения READ. Интерпретатор. Вызов READ. Построенные структуры. Внешние устройства и доступ к ним. Типы потоков и операции используемые для ввода и вывода. Действие макроса. Запись символов и макроинтерпретаций. Системная переменная.