У вас вопросы?
У нас ответы:) SamZan.net

Тема- Конструктор і його перевантаження

Работа добавлена на сайт samzan.net: 2015-07-10

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 30.6.2025

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

Тема: Конструктор і його перевантаження.

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

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

Хід роботи

Перевірити роботу  програми :

#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;
}
//
метод звільнення  динамично  виділенїй памятs
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.  Чи можна перевантажувати деструктор?




1. Принципы юридической ответственности
2. Семейная социализация как процесс формирования личности1
3. Введение Человек существует в мире объектов и субъектов.
4. Тема- Перевірка розподілу CMOS пам~яті в ПК Склала викладач Грамоліна У
5. 40 в течение 57 мин на один сеанс на курс 1520 сеансов
6. те~естірілген білім м~селесі Ежелгі Грецияда ~ойылып ж~не пайымдал~ан
7. ЛАБОРАТОРНАЯ РАБОТА 10.
8. Витте денежная реформа.html
9. Тарас Федорович Трясило
10. .В. зав. музеем истории терских казаков