Перегрузка операций

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

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

Если операция переопределяется при помощи дружественной функции, то она должна принимать соответственно два и один параметр.

При переопределении операций необходимо учитывать некоторые имеющиеся в языке ограничения:

· нельзя изменять количество параметров операции;

· нельзя изменить приоритет операций;

· нельзя определить новые операции;

· нельзя использовать параметры по умолчанию;

Полиморфизм

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

Чтобы разобраться, о чем идет речь, рассмотрим пример:

class BaseClass

{

public:

void Method();

};

class DrivedClass : public BaseGlass

{

public:

void Method();

};

void SimpleFunc(BaseClass *ptrBase)

{

ptrBase->Method();

}

А теперь попробуйте ответить на вопрос: "К какому методу Method относится вызов в функции SimpleFunc?" Правильно, к методу базового класса. И для того, чтобы вызвать метод производного класса, необходимо использование операции разрешения контекста.

Что же делать, чтобы иметь возможность вызывать оба метода? Ответ на этот вопрос дает полиморфизм — использование одного и того же вызова для ссылки на разные методы в зависимости от типа объекта. Для поддержки полиморфизма язык программирования должен поддерживать механизм позднего связывания, при котором решение о том, какой именно метод с одним и тем же именем должен быть вызван, принимается в зависимости от типа объекта уже во время выполнения программы.

Библиотека потоков

Библиотека потоков данных TPL модель потоков данных поддерживающая программирование на основе субъектов путем обеспечения в процессе передачи сообщений для не детализированного потока данных и задач по конвейеризации. Компоненты потока данных основываются на типах и инфраструктуре планирования TPL и интегрировать с поддержкой языка C#, Visual Basic для асинхронного программирования. Эти компоненты потоков данных полезны при наличии нескольких операций, которые должны асинхронно взаимодействовать друг с другом, или при необходимости обрабатывать данные по мере того, как они становятся доступными.

Базовые элементы программы на С

· Main Menu

· ToolBars

· Symbol Window

· Symbol Panel

· File Tab Bar

· Code Editor

· File Tree Window

· Messange Window

32.Написание и компиляция простых программ на C/C++. Написание вашей первой программы. Пример простой программы на С. Структура простой программы. Как сделать программу читаемой. Подготовка и компиляция простых программ на С/С++.

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