- •Введение. Принципы объектно-ориентированного программирования
- •Глава 1. Классы и объекты
- •1.1. Операция разрешения области видимости ::
- •1.2. Перечислимый тип
- •1.3. Модификатор const
- •1.4. Новый тип данных – ссылка &
- •Inline определение_функции
- •2. Определение класса. Сокрытие информации.
- •3. Объект.
- •4. Конструкторы и деструкторы
- •4.1.Назначение конструктора
- •4.2. Конструктор копирования
- •X::X(X&); // где X – имя класса
- •4.3. Деструктор
- •5. Неявный указатель this
- •6. Перегрузка операций
- •7. Примеры перегрузки некоторых операций
- •7.1. Перегрузка операции [ ]
- •7.2. Перегрузка операции ()
- •7.6. Перегрузка операции (тип)
- •8. Дружественность
- •Istream
- •10. Массивы объектов.
- •11. Функции- и классы-шаблоны
- •11.1 Функции-шаблоны (родовые функции)
- •11.2 Классы-шаблоны
- •12. Член-данные класса – объекты другого класса: агрегированные классы.
- •Глава 2. Наследование. Полиморфизм
- •1. Базовый и порожденный классы
- •2. Конструкторы порожденного класса
- •3. Стандартные преобразования при наследовании
- •4. Множественное наследование. Виртуальный базовый класс
- •4.1. Прямые базовые классы
- •4.2. Виртуальный базовый класс
- •5. Полиморфизм, раннее и позднее связывание, виртуальные функции
- •5.1 Раннее (статическое) и позднее (динамическое) связывание
- •5.2. Определение виртуальной функции
- •5.3. Чистая виртуальная функция и абстрактный класс
- •5.4. Правила определения виртуальных функций
- •5.5. Механизм позднего связывания
- •6. Библиотека fstream – работа с файлами
- •Глава 3. Библиотека стандартных шаблонов (бсш). Контейнеры
- •1. Контейнер. Структура бсш.
- •2. Контейнер Vector – динамический массив
- •Контейнер list – список
- •4. Контейнер Set – множество
- •Содержание
- •Глава 1. Классы и объекты
- •Глава 2. Наследование. Полиморфизм
- •Глава 3. Библиотека стандартных шаблонов (бсш). Контейнеры
Контейнер list – список
Этот
контейнер реализует двунаправленный
линейный список, в котором используется
последовательный доступ с начала или
конца списка. Элемент списка имеет
структуру:
В классе имеется 4 конструктора, перегружены операции сравнения и определены 42 член-функции. Так как список двунаправленный, то добавление и удаление выполняется как с начала, так и с конца. Ниже на рисунке приведены основные операции для работы со списком
push_front(значение) – добавить в начало,
push_back(значение) – добавить в конец,
pop_front( ) – удалить с начала,
pop_back( ) – удалить с конца,
insert(итератор,значение) – вставить в середину, место указывается итератором,
erase(итератор) – удалить из середины, место указывается итератором,
front( ) – возвращается значение элемента с начала списка,
back( ) – возвращается значение элемента с конца списка.
Пример. Сортировка прямым выбором: минимальное число находится в исходном списке, удаляется из него и добавляется в новый список
#include <list.h>
#include <iostream.h>
#include <conio.h>
int main(int argc, char* argv[])
{list <int> l1, l2;
int i, k;
cout << "\nlist:";
for(i = 0; i < 10; i++)
l1.push_back(random(30));
list <int> :: iterator pl, pmin;
cout << "\nВывод через Iterator:";
for(pl = l1.begin( ); pl != l1.end( ); pl++)
cout << *pl << ' ';
while (!l1.empty( ))
{pmin = min_element(l1.begin( ),l1.end( )); // из algorithm.h
l2.push_back(*pmin); // добавить в список l2
l1.erase(pmin); // удалить минимум из списка l1
}
cout << "\n rezult: ";
for(pl = l2.begin( ); pl != l2.end( ); pl++)
cout << *pl << ' ';
return 0;
}
4. Контейнер Set – множество
Контейнер Set определяет математическое множество объектов. Основное достоинство класса в том, что во множество не добавляются одинаковые объекты. Добавление во множество, в отличие от предыдущих контейнеров, выполняется функцией класса insert(значение).
Пример. Определить множество различных символов в заданном тексте.
#include <set.h>
#include <string.h>
#include <conio.h>
#include <iostream.h>
int main(int argc, char* argv[])
{set <char> s;
char * ss = “программируйте, улыбаясь!”;
for(int i = 0; i < ss[i]; i++)
s.insert(ss[i]);
set <char> :: iterator ps;
cout << "\nsize set = " << s.size( ); // 20 различных символов
for(ps = s.begin( ); ps != s.end( );ps++) // вывод их, используя итератор
cout << *ps;
return 0;
}
Содержание
Введение. Принципы объектно-ориентированного программирования
Глава 1. Классы и объекты
1. Новые возможности языка С++
1.1. Операция разрешения области видимости ::
1.2. Перечислимый тип.
1.3. Модификатор const
1.4.Новый тип данных – ссылка &.
1.5. Функции в Си++
2. Определение класса. Сокрытие информации.
3. Объект.
4. Конструкторы и деструкторы
4.1.Назначение конструктора
4.2. Конструктор копирования.
4.3. Деструктор
5. Неявный указатель this
6. Перегрузка операций
7. Примеры перегрузки некоторых операций
7.1. Перегрузка операции [ ]
7.2. Перегрузка операции ( )
7.3. Перегрузка операции =
7.4. Перегрузки операций + и +=
7.5. Перегрузка операции ++
7.6. Перегрузка операции (тип)
8. Дружественность
9. Перегрузка операций потокового ввода >> и вывода <<.
10. Массивы объектов.
11. Функции- и классы-шаблоны
11.1 Функции-шаблоны (родовые функции)
11.2. Классы-шаблоны
12. Член-данные класса – объекты другого класса: агрегированные классы.
