Тема: Класи. Видалення масиву
#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;). В звичайних умовах я втрачав би пам'ять, але у класів є власні деструктори. Питання полягає в тому чи потрібно явно видаляти масив чи деструктор зробить свою роботу?
Дякую