Is there a way to destruct a structure (not a class)?
В C++ структура
точно такая же, как класс
, за исключением видимости по умолчанию для членов и баз. Поэтому, если существует способ "уничтожить" класс, вы можете использовать точно такой же способ для "уничтожения" структуры.
Так, если в вашей программе на C++ есть struct s { }
, вы можете сделать следующее:
s *v = new s();
delete v; // will call structure's destructor.
За исключением спецификатора доступа по умолчанию ("частный" для класса, "общедоступный" для структуры), все остальное в C ++ классе и структуре. Итак, ДА, вы можете писать и использовать деструкторы в структуре так же, как это делается в классе.
Структуры идентичны классам, за исключением того, что по умолчанию видимость и наследование являются общедоступными (а не частными).
Таким образом, вы можете создавать и уничтожать структуры точно так же (как класс или встроенный тип):
// Create on the heap, need to manually delete.
MyStruct *const pStruct = new MyStruct();
delete pStruct;
// Created on the stack, automatically deleted for you.
MyStruct struct;
Структуры и классы - это одно и то же, есть просто техническая разница (поле доступа по умолчанию), которая возникает из-за концептуальной разницы между ними. Однако каждая структура, такая как класс, вызывает свои конструкторы, когда объекты должны быть созданы, и свой деструктор, когда ее поле видимости заканчивается.
В C ++ структуры не менее мощны, чем классы.