Будь умным!


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

Лабораторная работа ’14 Программирование на языке Сс использованием классов.html

Работа добавлена на сайт samzan.net: 2016-01-17

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

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

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

от 25%

Подписываем

договор

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

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

Деструктор является дополнением конструктора. Он имеет то же имя, что и класс, но с префиксом - тильдой (~). Он вызывается всякий раз, когда уничтожается представитель класса. Объект считается уничтоженным, когда завершил работу деструктор объекта. Для деструктора существуют следующие правила:

  •  деструктор не может иметь аргументов;
  •  деструктор не может возвращать значения;
  •  деструктор не наследуется (исключением является виртуальный деструктор);
  •  для одного класса может существовать только один деструктор;
  •  если деструктор не задан явным образом, то автоматически создаётся пустой деструктор.

Пример 14.6.

//file ctime.h

#ifndef __CTIME_H__

#define __CTIME_H__

class CTime

{ char *timestr;

public:

CTime(char *str=”00:00:00”);  //конструктор по умолчанию

 CTime(const CTime& clk);  //копирующий конструктор

~CTime();    //деструктор

 show();    //функция-элемент

}; //обязательно ставить точку с запятой, т.к. class

// объявление типа

#endif

//file ctime.cpp

#include <string>

#include <iostream>

#includectime.h

using namespace std;

CTime:: CTime(char *str=”00:00:00”)

{ timestr=new char[strlen(str)+1];

strcpy(timestr,str);

}

CTime:: CTime(const time& clk)

{ timestr=new char[strlen(clk.timestr)+1];

strcpy(timestr,clk.timestr);

}

CTime::~ CTime()

{ delete [] timestr;

}

CTime::show()

{ cout<<”Time is “<<timestr<<endl;

}

//file main.cpp

#include “ctime.h”

void main(void)

{ CTime a; //для а вызывается конструктор по умолчанию

 CTime *b=new CTime; //для b вызывается конструктор по

// умолчанию

CTime e(a); //для e вызывается копирующий конструктор

//вызовем функцию-элемент

a.show(); //00:00:00

 b->show(); //00:00:00

 e.show;  //00:00:00

}

//в конце области видимости автоматически вызываются деструкторы объектов в порядке, обратном вызову конструкторов, т.е. сначала для е, затем для d и т.д..

Примеры программирования

Пример 14.7. Вывод данных с использованием манипуляторов.

#include <iostream>

#include <iomanip>

#include <math.h>

using namespace std;

int main()

{ double x, y;

cout << "Input x ";

cin >> x;

y = sin(x);

cout << setprecision(3);

cout << setw(7) << x;

cout << setw(7) << y;

return 0;

}

Пример 14.8. Описать и определить класс-список.

Файл list.h содержит описание класса.

#ifndef __LIST_H__

#define __LIST_H__

struct list

{

int inf; // информационное поле

 list *next; // указатель на следующий элемент списка

};

class CSpisok

{

 list* head; // указатель на начало списка

public:

CSpisok (int);

CSpisok (CSpisok&);

void print ();

~CSpisok();

};

#endif

Файл list.cpp содержит определение функций-элементов.

#include <stdlib.h>

#include <iostream>

#include <iomanip>

#include "list.h"

using namespace std;

CSpisok:: CSpisok(int n)

//конструктор инициализирует список из n элементов по принципу

// "очередь"

{ head = NULL;

list *p,*pn;

for (int i = 0; i<n; i++)

{

p = new list;

p>inf = random(100)-50;

p>next = NULL;

if (head == NULL) head = p;

else pn>next = p;

pn = p;

}

}

CSpisok:: CSpisok (const CSpisok& s)

//конструктор копии класса CSpisok 

{ head = NULL;

list *sp = s.head, *p, *pn;

while (sp)

` { p = new list;

p>inf = sp>inf;

p>next = NULL;

if (head == NULL) head = p;

else pn>next = p;

pn = p;

sp = sp>next;

 }

}

CSpisok::~ CSpisok()

//деструктор - уничтожает объект класса список из памяти

{ list *p;

while (head)

{ p = head;

head = head>next;

delete p;

}

}

void CSpisok::print()

//функция-элемент печати содержимого списка

{ list *p = head;

while (p)

{ cout<<setw(5)<<p>inf;

p = p>next;

}

cout<<endl;

}

Файл main.cpp содержит основную функцию.

#include <iostream>

#include <iomanip>

#include “list.h”

using namespace std;

void main (void)

{ spisok s1(10), // создание списка из 10 элементов

 s2(s1), // s2- копия списка s1

s3(15); // создание списка из 15 элементов

s1.print(); // печать s1

s2.print(); // печать s2

s3.print(); // печать s3

}

В проект включены файлы: main.cpp и list.cpp.

Результаты выполнения программы:

-49  -50  -17  -47  -15  -29     3   -31  20  44

-49  -50  -17  -47  -15  -29     3   -31  20  44

-23    -6  -40   19      6  -46  -34    31  18  26  32  45  -29  -8  45

Контрольные вопросы

  1.  Что представляет собой класс?
  2.  Какие спецификации доступа используются при описании класса?
  3.  Что является элементами класса?
  4.  Как осуществляется доступ к элементам класса?
  5.  Для чего используется указатель this?
  6.  Что такое конструктор?
  7.  Что такое деструктор?

Варианты заданий

Номер
вариа
нта

Задание

1, 16

Определить класс-строку. В класс включить два конструктора: для определения класса строки строкой символов и путем копирования другой строки (объекта класса строки). Предусмотреть функции поиска слова в строке и добавления другой строки, начиная с позиции N

2, 17

Определить класс-строку. В класс включить два конструктора: для определения класса строки строкой символов и путем копирования другой строки (объекта класса строки). Предусмотреть функции слияния двух строк и функцию подсчёта предложений в строке.

3, 18

Определить класс-строку. В класс включить два конструктора: для определения класса строки строкой символов и путем копирования другой строки (объекта класса строки). Предусмотреть функции сортировки слов в строке по-алфавиту и подсчёта количества слов.

4, 19

Определить класс список элементов. В определение класса включить два конструктора: для определения списка по его размеру и путем копирования другого списка. Предусмотреть функции подсчёта количества элементов списка и добавления одного списка в другой список, начиная с позиции N.

5, 20

Определить класс список элементов. В определение класса включить два конструктора для определения списка по его размеру и путем копирования другого списка. Предусмотреть функции сортировки списка по возрастанию и вывода на экран в обратном порядке.

6, 21

Определить класс список элементов. В определение класса включить два конструктора для определения списка по его размеру и путем копирования другого списка. Предусмотреть функции инверсии списка (123->321) и поиска подсписка в списке.

7, 22

Определить класс сортированный список элементов. В определение класса включить два конструктора для определения списка по его размеру и путем копирования другого списка. Предусмотреть функции добавления элемента и слияния двух сортированных списков.

8, 23

Определить класс список элементов. В определение класса включить два конструктора для определения списка по его размеру и путем копирования другого списка. Предусмотреть функции формирования нового списка из элементов, входящих только в один из двух других списков и вычисления суммы элементов списков.

9, 24

Определить класс матрицу. В класс включить два конструктора для определения матрицы по количеству элементов и путем копирования другой матрицы. Предусмотреть функции вычисления детерминанта матрицы и умножения матрицы на число.

Номер
вариа
нта

Задание

10, 25

Определить класс стек. В класс включить два конструктора для определения стека по его размеру и путем копирования другого стека. Предусмотреть функции вычисления среднего арифметического из элементов стека и нахождения элемента по его номеру

11, 26

Определить класс вектор. В класс включить два конструктора для определения вектора по его размеру и путем копирования другого вектора. При задании вектора по его размеру предусмотреть его заполнение случайными числами. Предусмотреть функции умножения векторов и подсчёта суммы элементов вектора.

12, 27

Определить класс вектор. В класс включить два конструктора для определения вектора по его размеру и путем копирования другого вектора. При задании вектора по его размеру предусмотреть его заполнение случайными числами. Предусмотреть функции нахождения максимального и минимального из элементов вектора и умножения вектора на число.

13, 28

Определить класс вектор. В класс включить два конструктора для определения вектора по его размеру и путем копирования другого вектора. При задании вектора по его размеру предусмотреть его заполнение случайными числами. Предусмотреть функции сортировки вектора по возрастанию и нахождения среднего арифметического из элементов вектора.

14, 29

Определить класс квадратная матрица. В класс включить два конструктора для определения матрицы по количеству элементов и путем копирования другой матрицы. Предусмотреть функцию нахождения седловой точки матрицы и функцию, меняющую местами элементы матрицы, симметричные относительно побочной диагонали.

15, 30

Определить класс квадратная матрица. В класс включить два конструктора для определения матрицы по количеству элементов и путем копирования другой матрицы. Предусмотреть функцию поворота матрицы на 900 и функцию нахождения суммы элементов столбца с минимальным диагональным элементом.

PAGE  107




1. Соответственно процессуальным теориям мотивации поведение человека есть также функцией ее восприятия и о
2. 13 реферат дисертації на здобуття наукового ступеня кандидата економічних наук Хар
3. внутренние таблицы состоят из множества полей большинство из которых созданы про запас и обычно не испо
4. Основные положения, правила и оценка соответствия однородной продукции
5. Crds lbels. These re the most common cses I believe
6. Инкотермс- правила оформления контрактов
7.  Этические воззрения Дидро Гольбаха Гельвеция и Ламетри [2
8. на тему Кафе на 200 мест
9. владелец автомобиля данной марки то этот сотовый телефон Вы просто обязаны купить Телефон HUMMER очень редкий
10. Книга Эшли об узлах Книга сообщества http---vk
11. Записка ldquo;О внутреннем состоянии Россииrdquo; предоставленная Государю Императору Александру II I
12. 1 Трудовое законодательство и трудовое право Начну с провокационного утверждения- законодательство явл
13. Реферат- Про практичність соціальної психології
14. Уральский федеральный университет имени первого Президента России Б1
15. тема химических элементов Д
16. Зависимое поведение
17. Источники права
18. Методические рекомендации ПРОГРАММА КУРСА ОГЛАВЛЕНИЕ ВВЕДЕНИЕ Тема I.
19. Первая встреча А
20. реферат дисертації на здобуття наукового ступеня кандидата педагогічних наук5