
- •Структуры
- •Массив структур
- •Указатели на структуру
- •Битовые поля
- •Объединения
- •Перечисления
- •Переименование типов
- •Открытие файла
- •Функции работы с файлами
- •Форматный ввод/вывод
- •Ввод/вывод строк. Функции позиционирования
- •Чтение из двоичного файла и запись в него
- •Свойства ООП
- •1.1 Свойства ООП
- •Понятие класса в С++
- •1.2 Понятие класса С++
- •Создание класса
- •1.3 Создание класса
- •Члены класса
- •1.4 Члены класса
- •Инкапсуляция
- •1.5. Инкапсуляция
- •1.6 Функции-члены класса
- •Реализация понятия «дата» при помощи структуры
- •1.7 Реализация понятия «дата» при помощи структуры
- •Реализация понятия «дата» при помощи класса
- •1.8 Реализация понятия «дата» при помощи класса
- •Определение и вызов функций–членов класса
- •Выводы. Примеры
- •1.9 Выводы
- •1.10 Пример создания класса
- •Конструкторы
- •2.1 Конструкторы
- •2.2 Пример класса без конструктора
- •2.3 Пример класса с конструктором
- •2.4. Конструктор с параметрами по умолчанию
- •2.5. Деструкторы
- •2.6. Пример класса с конструктором и деструктором
- •2.7. Подставляемые или inline функции.
- •2.8. Подставляемые функции-члены.
- •2.9. Указатель this
- •2.10. Использование указателя this
- •Дружественные функции
- •3.1 Дружественные функции
- •3.2 Пример дружественной функции
- •3.3 Дружественные классы
- •3.4. Уточнение имени элемента.
- •3.5. Определение переменных непосредственно перед использованием
- •3.6. Статические элементы класса.
- •2.7. Пример
- •Перегруженные функции
- •4. Перегрузка функций и операций
- •4.1 Полиморфизм
- •4.2 Перегруженные функции
- •4.3 Перегрузка конструктора
- •4.4 Выбор экземпляра функции
- •4.5 Перегрузка стандартных операций
- •4.6 Перегрузка операций сложения и присваивания
- •4.7 Перегрузка операций ++ и --
- •4.8 Дружественные функции-операции
- •4.9 Перегрузка операции индексации []
- •4.10 Аргументы по умолчанию
- •5. Работа с объектами
- •5.1 Ссылки в С++
- •5.2 Передача объектов, как аргументов функции
- •5.3 Массивы объектов
- •5.4 Указатель на объект
- •5.5 Динамическое выделение памяти. Операторы new, delete.
- •5.6 Локальные классы
- •5.7 Вложенные классы
- •5.8 Имена заголовочных файлов в С++
- •5.9 Строковые переменные в С++.
- •6. Наследование
- •6.1 Понятие наследования
- •6.2 Базовые и производные классы
- •6.3 Одиночное и множественное наследование
- •6.4 Управление доступом производных классов
- •6.5 Пример
- •6.6 Конструкторы с параметрами при наследовании
- •6.7 Конструкторы при множественном наследовании
- •7. Виртуальные функции. абстрактные классы
- •7.1 Указатели на производные типы
- •7.2 Виртуальные функции
- •7.3 Пример
- •7.4 Чистые виртуальные функции и абстрактные типы
- •7.5 Виртуальные базовые классы
- •7.6 Шаблоны
- •7.7 Шаблоны функций
- •7.8 Пример
- •7.9 Использование шаблонов с двумя типами параметров
- •7.10 Шаблоны классов
sum z(x2,y2);
z.summa();
sum s;
s.summa();
return 0;
}
2.5. Деструкторы
Деструкторы – это специальные функции-члены, которые уничтожают объекты класса и освобождают занимаемую этими объектами память; также осуществляют восстановление экрана, закрытие файла и т.д.
Деструктор имеет такое же имя, как и класс, но перед ним ставится знак тильда ~. Деструктор не должен иметь ни параметров, ни типа возвращаемого значения.
sum :: ~sum() {…}
Деструктор вызывается явно или не явно. Явно – при уничтожении объекта. Не явно – для локальных объектов, когда перестаёт быть активным блок, в котором данный объект объявлен.
2.6. Пример класса с конструктором и деструктором
/*Составить программу, осуществляющую вычисление по формуле: S = a*b + c*k + a*c */
# include <iostream> using namespace std; class Pro
{
int x, y, z; public:
Pro (int, int); int put_x (); int put_y (); int put_z ();
void proizv (void); ~Pro ();
};
Pro :: Pro (int x1, int y1){ x = x1;
y = y1; }
int Pro :: put_x (void) {return x ;}
int Pro :: put_y (void) {return y ;}
int Pro :: put_z (void) {return z ;}
void Pro :: proizv (void) {z = x*y ;}
Pro :: ~Pro () {}
int main(int argc, char** argv) { int S, a, b, c, k;
cout<< “\n Введите a, b, c и k \n”; cin>> a >> b >> c >> k;
Pro D = Pro (a, b);
Pro E (c, k);
Pro F (a, c);
D.proizv ();
E.proizv ();
F.proizv ();
S = D.put_z () + E.put_z () +F.put_z (); cout<< “сумма = “<<S;
F. Pro :: ~ Pro ();
E. Pro :: ~ Pro ();