Тема: Класи. Видалення масиву
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<ctime>
#include <string>
#include <iomanip>
using namespace std;
class User
{
private:
};
class Admin
{
private:
};
class CoffeeBox
{
private:
    struct Coffee
    {
        string coffee_type;
        double coffee_price;
    };
    struct Adds
    {
        string add;
        double add_price;
    };
    int size_coffee;
    int size_adds;
    Coffee *c_types;
    Adds *a_types;
    double cash;
public:
    CoffeeBox()
    {
        size_coffee = 0;
        size_adds = 0;
        c_types = new Coffee[size_coffee];
        a_types = new Adds[size_adds];
        cash = 0;
    }
    CoffeeBox(string type_of_coffee, double c_price, string type_of_add, double a_price)
    {
        ++size_coffee;
        ++size_adds;
        c_types[size_coffee - 1].coffee_type = type_of_coffee;
        a_types[size_adds - 1].add = type_of_add;
        c_types[size_coffee - 1].coffee_price = c_price;
        a_types[size_adds - 1].add_price = a_price;
        cash = 0;
    }
    void show_adds()
    {
        cout << setw(15) << "\tNAME" << "PRICE" << endl;
        for (int i = 0; i < size_adds; i++)
        {
            cout << i + 1 << ". " << setw(12) << left << a_types[i].add << setw(5) << left << a_types[i].add_price<< endl;
        }
    }
    void show_coffees()
    {
        cout << setw(15) << "\tNAME" << "PRICE" << endl;
        for (int i = 0; i < size_adds; i++)
        {
            cout << i + 1 << ". " << setw(12) << left << c_types[i].coffee_type << setw(5) << left << c_types[i].coffee_price << endl;
        }
    }
    void add_coffee()
    {
        Coffee *new_coffee = new Coffee[size_coffee + 1];
        char choice;
        do
        {
            for (int i = 0; i < size_coffee; i++)
            {
                new_coffee[i] = c_types[i];
            }
            cout << "Enter the name of new coffee :";
            cin >> new_coffee[size_coffee + 1].coffee_type;
            cout << "Enter the price :";
            cin >> new_coffee[size_coffee + 1].coffee_price;
            size_coffee++;
            c_types = new_coffee;
            do
            {
                cout << "Add another coffee type? y/n :";
                cin >> choice;
            } while (choice != 'y' && choice != 'n');
        } while (choice != 'n');
    }
    double cash_operations(double sum)
    {
    }
};У рядку 92 я роблю перепосилання основного масиву на копію (c_types = new_coffee;). В звичайних умовах я втрачав би пам'ять, але у класів є власні деструктори. Питання полягає в тому чи потрібно явно видаляти масив чи деструктор зробить свою роботу?
Дякую