Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВСЕ ЛАБОРАТОРНІ І СЕМЕСТР.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
250 Кб
Скачать
☆

Хід роботи

  1. За прикладом, що наведений нижче, переробити програму з лабораторної роботи №1. Для об’єктів класу створити конструктор без параметрів, конструктор з параметрами, конструктор копіювання.

#include <iostream> #include <conio.h>

using namespace std;

class mas {         int size;         int *p; public:         mas(){};         mas & operator = (mas & a);         void Destroy();         mas(const mas & a);

//конструктор ініціалізації         mas(int s)         {                 p = new int [s];                 size = s;         } //кількість елементів в масиві         int GetSize()         {                 return size;         }

        void PutMas(int i);         int GetMas (int i); //деструктор         ~mas()         {                 Destroy();         } };

//перевантажений конструктор копіювання mas::mas(const mas &a) {         p = new int [a.size];         for (int i = 0; i < a.size; i++)                 *(p+i) = *(a.p+i);         size = a.size; } //перевантаження оператору привласнення //копіювання всіх елементів з одного масиву в другій mas & mas::operator =(mas &a) {         p = new int [a.size];         for (int i = 0; i < a.size; i++)                 *(p+i) = *(a.p+i);         size = a.size;         return *this; } //метод звільнення динамічно виділеній пам’яті void mas::Destroy() {         if (size > 0)         {                 delete [] p;                 size = 0;         } } //заповнення масиву void mas::PutMas(int i) {                 *(p+i) = i; } //повернення елементу масиву int mas::GetMas(int i) {         return *(p+i); } void main () {         setlocale (0,"");         mas a(10); //виклик конструктора ініціалізації         mas c;

        for (int i = 0; i<10; i++)                 a.PutMas(i);         //конструктор копіювання     mas b = a;        c = b;

        cout<<"c = ";         for (int i = 0; i<10; i++)         {         cout<<c.GetMas(i)<<" ";}         cout<<"\na = "<<a.GetSize()<<"\n";         cout<<"b = "<<b.GetSize()<<"\n";         cout<<"c = "<<c.GetSize()<<"\n";

        //виклик методу звільнення виділеної пам’яті         a.Destroy();         //деструктор, якій містить метод Destroy()         b.~mas();         c.~mas();         //вивід кількості об’єктів масивів після звільнення пам’яті         cout<<"\na = "<<a.GetSize()<<"\n";         cout<<"b = "<<b.GetSize()<<"\n";         cout<<"c = "<<c.GetSize()<<"\n";         getch(); }

Контрольні запитання

  1. Дайте визначення конструктору.

  2. Для чого використовується перевантаження конструкторів?

  3. Чи можна перевантажувати деструктор?

Лабораторна робота № 8

Тема: Перевантаження операторів.

Мета: Ознайомитися з поняттям перевантаження операцій. Спроектувати и написати програму, яка використовує ці поняття.

Література: Г.Шилдт,Самоучитель С++, С.В. Глушков, Практикум по С++.