- •Структура платформы .NET
- •Схема выполнения программы в .NET
- •Схема работы компиляторов .NET
- •Достоинства языка С++
- •Структура программы
- •Модификаторы памяти
- •Пространство имен
- •Константы
- •Описание идентификаторов
- •Операции С++
- •Правила преобразования типов
- •Функции
- •ПЕРЕГРУЗКА ФУНКЦИЙ
- •Неоднозначность перегрузки
- •Шаблоны функций
- •Явная спецификация типов
- •Оперативная память
- •В адресном пространстве каждого процесса содержится:
- •Виртуальная память может находиться в трех состояниях
- •Средства защиты памяти
- •Страничное преобразование
- •ПРИМЕР РАБОТЫ С УКАЗАТЕЛЯМИ
- •Еще один пример с указателями
- •Утечки памяти
- •Процесс сборки мусора
- •Сборка мусора. Поколения объектов
- •Особенности ОС Windows
- •Процесс и поток
- •Очереди сообщений
- •Структура сообщения
- •Cпособы создания интерактивных Win приложений в VS C++
- •Функция WinMain
- •Создание окна
- •Функция окна
- •Цикл обработки сообщения
- •Определение запущенной копии приложения
- •Пример приложения
- •Команды передачи данных
- •Арифметические команды:
- •Каркас программы
- •Стековый фрейм
- •Парадигмы программирования
- •Элементы объектной модели
- •Преимущества объектной модели
- •Ограничения доступа
- •Спецификатор памяти static
- •Спецификатор const
- •Указатель this
- •Дружественные функции
- •Основные свойства и правила использования спецификатора friend:
- •Наследование
- •Основные правила использования базовых и производных классов:
- •Наследование атрибутов компонентов базового класса:
- •Множественное наследование
- •Использование виртуального класса
- •Полиморфизм
- •ПРОЦЕСС
- •Структура процесса
- •Поток (thread)
- •Создание и работа с потоками
- •Создание потока
- •Завершение потока
- •Совместимость потоков и стандартной библиотеки
- •Синхронизация потоков ПРИМЕР1
- •Как можно приостановить работу потока?
- •ПРИМЕР 2
- •Объекты синхронизации
- •Мьютекс. ПРИМЕР3
- •Критические секции ПРИМЕР4
- •События. ПРИМЕР5
- •Семафоры. ПРИМЕР6
- •Структура описания технологической операции
- •Типы программ
- •Жизненный цикл программного обеспечения
- •Структура процессов ЖЦПО
- •Стратегии конструирования ПО
- •Водопадная модель ЖЦПО
- •Макетирование
- •Спиральная модель БОЭМА
- •Инкрементальная модель
- •Модель быстрой разработки приложений (RAD)
- •Схема процесса XP.
- •Эксплуатационные требования к программным продуктам
Спецификатор памяти static
class Example { public: static intx ; } p1, p2;
int Example::x=67;
Спецификатор const
class Stack {
char s[MaxSize]; int top;
public:
Stack () {top = 0;}
void Look_Top() const {cout << s[top];} void push() {top++;}
};
const Stack s1; Stack s2;
s2.Look_Top(); s1.push(); s1.Look_Top();
Указатель this
date today,my_day; today.out(); my_day.out();
cout << day << " " << month;
Date *const this;
cout << this>day << " " << this>month;
Организация списка |
|
class spisok { |
spisok::spisok(int val,char * |
int value; |
strok) : str(strok) |
char * str; |
{ |
spisok* previous; |
value=val; |
spisok* next; |
if (first == 0) |
public: |
{ first = this; |
staticspisok* first; |
previous = 0; |
spisok(int, char*); |
next = 0; |
void Look(); |
} |
spisok* Get_Next(); |
else |
}; |
{ first->previous = this; |
spisok* spisok::first= 0; |
this->next = first; |
|
previous = 0; |
|
first = this; |
}
}
void spisok::Look()
{
cout << value << "\n" << str << "\n";
}
spisok * spisok::Get_Next() { return next;
}
main()
{
spisok * p;
p = newspisok(1,"stroka1"); p = newspisok(2,"stroka2"); p = newspisok(3,"stroka3"); p=spisok::first;
while (p!=0)
{
p->Look(); p=p->Get_Next();
}
}
Основные свойства и правила использования указателя this:
каждый новый объект имеет свой скрытый указатель this;
thisуказывает на начало своего объекта в памяти;
this не надодополнительно объявлять;
this передается какскрытый параметр во все нестатические член-функции своегообъекта;
this - этолокальная переменная, которая недоступна за пределами объекта.