Разработка класса для работы с динамической памятью
Автор: dmajd • Июнь 2, 2023 • Лабораторная работа • 2,579 Слов (11 Страниц) • 192 Просмотры
Программирование. ООП. Лабораторная работа №3
Разработка класса для работы с динамической памятью
Разработать класс "Динамический массив объектов" для операций с объектами класса, разработанного в лабораторной работе №2. Класс должен включать указатель на динамический массив, текущее количество объектов в массиве, конструкторы и деструктор, методы set(…), get(…), add(…), del(…), show(…). Определить другие необходимые методы. В конструкторах и деструкторе реализовать выделение и освобождение динамической памяти под массив объектов.
Для выполнения задания прикрепить архив файлов проекта MS Visual C++.
Замечание 1. Для выполнения задания необходимо использовать результаты предыдущей лабораторной работы №2 "Разработка простого класса".
Замечание 2. В примере не учитывается, что вводимые символьные данные могут иметь пробелы (пробел распознается как конец строки). Для реализации строк с пробелами необходимо использовать специальные функции ввода строк или методы класса string. Например:
fflush(stdin); // очистка потока
cout << "Введите ФИО студента: ";
gets_s(name,sizeof(name));
Пример
#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
struct date // дата
{
int day, month, year; // день, месяц, год
};
class Student
{
char name[30]; // ФИО студента
date d; // дата рождения
char adr[30], fac[20]; // домашний адрес и факультет
int kurs; // курс
public:
Student(); // конструктор, инициализация объекта
void input(); // метод ввода данных студента
void set(Student s); // метод для занесения данных студента из объекта типа Student
Student get(); // метод для считывания данных студента
char *getFac(); // метод для обращения к факультету студента
int getKurs(); // метод для считывания курса студента
void show(); // метод вывода данных студента
};
Student::Student()
{
input(); // вызов метода для текущего объекта, то же, что this->input();
}
void Student::input()
{
cout << "==========" << endl;
cout << "Введите ФИО студента: ";
cin >> name;
cout << "Введите дату рождения\n";
cout << "день: ";
cin >> d.day;
cout << "месяц: ";
cin >> d.month;
cout << "год: ";
cin >> d.year;
cout << "Введите адрес: ";
cin >> adr;
cout << "Введите факультет: ";
cin >> fac;
cout << "Введите курс: ";
cin >> kurs;
}
void Student::set(Student s)
{
strcpy(name,s.name);
d=s.d; // d.day=s.d.day; d.month=s.d.month; d.year=s.d.year;
strcpy(adr,s.adr);
strcpy(fac,s.fac);
kurs=s.kurs;
}
void Student::show()
{
cout << "ФИО: " << name << endl;
cout << "Дата рождения: " << d.day << '.' << d.month << '.' << d.year << endl;
...