Создание динамического массива объектов
Автор: pqwesgg • Октябрь 14, 2023 • Лабораторная работа • 5,691 Слов (23 Страниц) • 153 Просмотры
Министерство науки и высшего образования Российской Федерации
Федеральное государственное бюджетное учреждение
высшего образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ
УПРАВЛЕНИЯ И РАДИОЭЛЕТРОНИКИ (ТУСУР)
Кафедра автоматизированных систем управления (АСУ)
Отчет по лабораторной работе №2
по дисциплине
«ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ»
Выполнил:
«___» __________ 20__ г.
Проверил:
«___» __________ 20__ г.
Томск – 2023
Содержание
- Индивидуальное задание.
- Тема работы.
- Теория.
- Результат работы программы.
- Вывод.
- Листинг программы
Индивидуальное задание
Вариант 12
Экзамен
Имя студента — char
дата — int
оценка — int
Тема работы
Создание динамического массива объектов. Деструктор объекта. Два типа полиморфизма: принудительное приведение типа, перегрузка функций и перегрузка операторов (унарных и бинарных).
Теория
Объекты классов – это своего рода переменные, и они имеют те же возможности и свойства, что и переменные любых других типов. Поэтому вполне допустимо создавать массивы объектов, в том числе динамические. Однако при создании динамических переменных необходимо очищать память. Для этого удобно использовать деструкторы. Деструктор выполняет освобождение использованных объектом ресурсов и удаление нестатических переменных объекта. По сути, деструктор - это функция, которая называется по имени класса (как и конструктор) и перед которой стоит тильда (~). Деструктор не имеет возвращаемого значения и не принимает параметров. Кроме того, при использовании объектов класса
чтобы использовать объекты класса как обычные переменные (складывать,
присваивать и т.п.) необходимо переопределять (перегружать) соответствующие операторы. Операторы могут быть унарными (например, индексация или присвоение) или бинарными (сложение, сравнение). Еще один из способов, которым достигается
реализация полиморфизма в языке С++, заключается в использовании перезагрузки функций. В C++ две или более функций могут иметь одно и то же имя в случае, если они отличаются набором параметров в интерфейсе.
Результат работы программы
1.Создадим консольный проект с именем LAB2.
2.Добавим файл Main.h из лабораторной работы №1 в Exam.h.Создадим файл Exam.cpp .Переместим конструктор и функции объекта Exam из LAB1.cpp в файл Exam.cpp.
3.Напишем функцию приведения типа. Для этого с помощью ключевого слова operator напишите функцию объекта Exam, которая преобразует тип Person в int.
Exam::operator int() { //Оператор преобразования
return this->value;
}
int operator+(Exam& s1, Exam& s2) { //Перегрузка оператора сложения
if (s1.value < 2 || s1.value > 5) //Проверка 1 значения
s1.value = 0;
if (s2.value < 2 || s2.value > 5) //Проверка 2 значения
s2.value = 0
return(s1.value + s2.value);
}
4.Определим объект Group, который будет содержать динамический массив объектов Exam.Создадим два файла group.h и group.cpp.
5.В заголовочном файле group.h определим с помощь ключевого слова class объект Group. Данные класса имеют закрытый уровень доступа. Опишем конструктор объекта с одним аргументом.
#pragma once
#include "Exam.h"
class Group
{
private:
int array_size;
Exam* array;
public:
Group(int array_size); // Конструктор
~Group(); // Деструктор
void Check(int a); //Проверка
void Print() const; //Печать массива
...