путаница с new, delete в c++
есть вот такой код https://code-live.ru/post/cpp-class-inheritance/ там что-то про наследование . вот мой вопрос : Почему там нету оператора delete ведь ето постулат что если ты в с++ выделил память(хип она же куча) то и должен её сам почистить , или пользоваться умными указателями.
Вот 2 примера :
#include <iostream>
#include "human.h"
#include "teacher.h"
int main(int argc, char* argv[])
{
// Количество учебных часов преподавателя
unsigned int teacher_work_time = 40;
teacher *tch = new teacher("Васильков", "Петр", "Сергеевич", teacher_work_time);
std::cout << tch->get_full_name() << std::endl;
std::cout << "Количество часов: " << tch->get_work_time() << std::endl;
return 0;
}
student *stud = new student("Петров", "Иван", "Алексеевич", scores);
// Вывод полного имени студента (используется унаследованный метод класса human)
std::cout << stud->get_full_name() << std::endl;
// Вывод среднего балла студента
std::cout << "Средний балл: " << stud->get_average_score() << std::endl;
return 0;
}
почему здесь нету оператора delete , ведь дело в том что ето всего лиш один пример ,
есть много кода в интернете с такой же проблемой , или ето не проблема ,просто я чего-то не понимаю
Ответы (2 шт):
есть много кода в интернете с такой же проблемой
Потому что 90% кода в интернете - говно. Моё определение "говна" может не совпадать с вашим.
Полная статья тут: https://www.gunsmoker.ru/2010/05/90.html
Конкретно приведенная вами в пример статья демонстрирует наследование, создание объектов и вызов их методов. Деструкторы (и освобождение памяти) выходят за рамки статьи и никак не описаны. В качестве иллюстрации одного из аспектов этот код допустим. В качестве полноценного проекта - нет.
Преподаватели чуток устарели. Современный модный постулат - в коде не должно быть "сырых" указателей - то есть указателей, не обернутых в умные обертки вроде unique_ptr и shared_ptr.
Если с unique_ptr можно согласиться безоговорочно, он не вносит оверхед и работает весьма предсказуемо, то к shared_ptr следует относиться с осторожностью - потому что с ним ресурсы будут течь точно также, как без него, но у разраба будет ощущение благополучия