Перегрузка операций
Так же, как и для функций, язык 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++. Написание вашей первой программы. Пример простой программы на С. Структура простой программы. Как сделать программу читаемой. Подготовка и компиляция простых программ на С/С++.
Компиляция — трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду (абсолютный код, объектный модуль, иногда на язык ассемблера), выполняемая компилятором