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

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 3.5.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. Kuwait
3. Проблема Великого Молчания Внеземных Цивилизаций
4. ниями окружающей среды сигнальноорганизующие действия приобретают огромное значение
5. докладати зусиль до подолання мотивів якими обумовлюється його ірраціональна поведінка та стимулювати мот
6. Назначение наказания по совокупности преступлений Назначение наказания по совокупности приговоров
7. тема- Штраф как вид уголовного наказания
8. Сертификация продукции услуг персонала Серт деятельность специально уполномоченных органов направлен
9. Стимулирование экономического развития региона.html
10. реферат дисертації на здобуття наукового ступеня кандидата ветеринарних наук Львів 2