Вообщем есть такое задание.
Создать класс Студент с полями фамилия, количество оценок, оценки (динамический массив оценок). определить методы конструктор (ы) конструктор копирования деструктор метод вывода информации о студенте. Определить класс Преподаватель (фамилия, предмет) с методом выставления оценки некотором студенту за определенную лабораторную работу. Продемонстрировать взаимодействие классов.
Я не могу понять зачем тут может понадобится конструктор копирования?Уже второе подобное задание.Я уже сколько думал, но в моем решении он только мешает.Может кто подсказать?
Оценки (динамический массив оценок)
Значит, вы выделяете память динамически, а в классе храните на нее указатель. Если вы не создаете копирующий конструктор - сгенерированный компилятором будет просто копировать этот указатель. И если вы не устраиваете утечку памяти, а освобождаете память в деструкторе - то в результате вы ее освободите два раза...
Вам надо неприятностей? Их есть у двойного освобождения памяти.
Та же ерунда будет и если вы ре реализуете оператор присваивания.
Можно запретить копирование и присваивание вообще - но это, скажем так, очень резко ограничит применимость вашего класса...
Что случится, если для класса, имеющего указатель или ссыльку, не определить конструктор копирования, оператор присваивания и деструктор?.. Пример:
class Student {
static int k;
unsigned* grade;
//...
public:
Student() : grade(new unsigned[20]) { ++k; cout << "Constructor" << k <<'\n';}
~Student() { cout << "Destructor\n"; }
};
int Student::k = 0;
int main()
{
Student s; // вызывается конструктор (создается массив 1 в динамической области
Student s2 = s; // копируется указатель ( оба указателья указывают на массив) 1
Student s3; // вызывается конструктор (создается массив 2 в динамической области
s3 = s; // копируется указатель, поэтому указатель s3 указывает на 1
// получается что на массив созданный вызовом конструктора s3 ничего не указывет
// и его нельзя уничтожить.
// С другой стороны массив 1 уничтожается 3 раза
return 0;
}
Это приведет к массу неприятносей
Сборка персонального компьютера от Artline: умный выбор для современных пользователей