- •Структура платформы .NET
- •Схема выполнения программы в .NET
- •Схема работы компиляторов .NET
- •Достоинства языка С++
- •Структура программы
- •Модификаторы памяти
- •Пространство имен
- •Константы
- •Описание идентификаторов
- •Операции С++
- •Правила преобразования типов
- •Функции
- •ПЕРЕГРУЗКА ФУНКЦИЙ
- •Неоднозначность перегрузки
- •Шаблоны функций
- •Явная спецификация типов
- •Оперативная память
- •В адресном пространстве каждого процесса содержится:
- •Виртуальная память может находиться в трех состояниях
- •Средства защиты памяти
- •Страничное преобразование
- •ПРИМЕР РАБОТЫ С УКАЗАТЕЛЯМИ
- •Еще один пример с указателями
- •Утечки памяти
- •Процесс сборки мусора
- •Сборка мусора. Поколения объектов
- •Особенности ОС Windows
- •Процесс и поток
- •Очереди сообщений
- •Структура сообщения
- •Cпособы создания интерактивных Win приложений в VS C++
- •Функция WinMain
- •Создание окна
- •Функция окна
- •Цикл обработки сообщения
- •Определение запущенной копии приложения
- •Пример приложения
- •Команды передачи данных
- •Арифметические команды:
- •Каркас программы
- •Стековый фрейм
- •Парадигмы программирования
- •Элементы объектной модели
- •Преимущества объектной модели
- •Ограничения доступа
- •Спецификатор памяти static
- •Спецификатор const
- •Указатель this
- •Дружественные функции
- •Основные свойства и правила использования спецификатора friend:
- •Наследование
- •Основные правила использования базовых и производных классов:
- •Наследование атрибутов компонентов базового класса:
- •Множественное наследование
- •Использование виртуального класса
- •Полиморфизм
- •ПРОЦЕСС
- •Структура процесса
- •Поток (thread)
- •Создание и работа с потоками
- •Создание потока
- •Завершение потока
- •Совместимость потоков и стандартной библиотеки
- •Синхронизация потоков ПРИМЕР1
- •Как можно приостановить работу потока?
- •ПРИМЕР 2
- •Объекты синхронизации
- •Мьютекс. ПРИМЕР3
- •Критические секции ПРИМЕР4
- •События. ПРИМЕР5
- •Семафоры. ПРИМЕР6
- •Структура описания технологической операции
- •Типы программ
- •Жизненный цикл программного обеспечения
- •Структура процессов ЖЦПО
- •Стратегии конструирования ПО
- •Водопадная модель ЖЦПО
- •Макетирование
- •Спиральная модель БОЭМА
- •Инкрементальная модель
- •Модель быстрой разработки приложений (RAD)
- •Схема процесса XP.
- •Эксплуатационные требования к программным продуктам
|
Операции С++ |
Унитарные |
|
c = ++a; |
// Значение переменных: с = (a+1) , |
a=(a+1) |
|
с = a++; |
// с=a; a=(a+1) |
Бинарные
Data+=10;// увеличить на 10 и присвоить
Тернарная :
условие ? операнд1 : операнд2;
Еслиусловиеистинно(не равен 0), то вычисляетсяоперанд1 и его значениеявляется результатомоперации, иначевычисляется
операнд2
max = (а > b) ? а : b;
Правила преобразования типов
Операнды char, unsigned char или short преобразуются к int по правилам:
char расширяется нулем или знаком в зависимости от умолчания для char;
unsigned char расширяется нулем; signed char расширяется знаком;
short, unsigned short и enum при преобразовании не изменяются.
Если один из операндов имеет тип long double, то другой преобразуется к типу long double.
Если один из операндов unsigned, другой преобразуется к unsigned.
Тип результата тот же, что и тип участвующих в выражении операндов.
Операнды преобразуются к тому типу, который имеет наибольший размер.
Возможно и явное преобразование операндов int Integer = 54;
float Floating = 15.854;
Integer = (int) Floating; // явное Integer = Floating; // неявное
Функции
Функция — это фрагмент кода, который можно неоднократно вызвать из любого места программы, они позволяют уменьшить избыточность программного кода и повысить его структурированность.
Выделяют описание (объявление и определение) и вызовфункции
void f (inta, int& b)
{a++; b++;} |
|
void f (inta, const int& b) |
|
Параметры по умолчанию |
|
intsum (inta, intb=10) |
|
sum (c,d); или sum (x); |
|
Переменное число параметров |
|
intsum(intx, ...); |
|
intmain() { |
// 50 |
std::cout << sum(2, 20, 30) << std::endl; |
|
std::cout << sum(3, 1, 2, 3) << std::endl; |
// 6 |
std::cout << sum(4, 1, 2, 3, 4) << std::endl; // 10 return0;
}
intsum(intx, ...) { intresult = 0;
int*p= &x; // Получаемадреспоследнегопараметра for(int i=0; i<x; ++i)
{ ++p; // Перемещаем указательнаследующийпараметр
} result+= *p; // Прибавляемочередноечисло
} returnresult;
Суммированиепроизвольногоколичествавещественныхчисел
doublesum(intx, ...); int main()
{
std::cout << sum(2, 20.2, 3.6) << std::endl; // 23.8 std::cout << sum(3, 1., 2.8, 3.4) << std::endl; // 7.2 return0;
}
doublesum(intx, ...)
{
doubleresult= 0.0, *pd = 0;
int *pi = &x; // Получаемадреспоследнегопараметра ++pi; // Перемещаемуказательдоприведениятипов!!!
pd = <double*>(pi); // Приведениетипов for(inti=0; i<x; ++i)
{
result+= *pd; // Прибавляемочередноечисло
++pd; // Перемещаемуказательнаследующийпараметр
}
returnresult;
}