Есть ли способ разрушить структуру (не класс)?
Могу ли я разрушить структуру на С++?
Ответ 1
В С++ a struct
точно совпадает с class
, за исключением видимости по умолчанию для членов и баз. Поэтому, если есть способ "уничтожить" класс, вы можете использовать тот же самый способ, чтобы "разрушить" структуру.
Итак, если у вас есть struct s { }
в вашей программе на С++, вы можете сделать это:
s *v = new s();
delete v; // will call structure destructor.
Ответ 2
За исключением спецификатора доступа по умолчанию ("private" для класса, "public" для struct), все остальное одинаково в классе и структуре С++. Итак, ДА, вы можете писать и использовать деструкторы в структуре так же, как в классе.
Ответ 3
Структуры идентичны классам, кроме видимости по умолчанию и наследования являются общедоступными (а не частными).
Итак, вы можете создавать и уничтожать структуры так же, как это (такой же, как класс или встроенный тип):
// 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;
Ответ 4
Структуры и классы - это одно и то же, есть только техническая разница (поле доступа по умолчанию), которое происходит из-за концептуальной разницы между ними. Однако каждая структура, подобная классу, вызывает свои конструкторы, когда объекты должны быть созданы, и ее деструктор, когда заканчивается поле видимости.
В С++ структуры не менее эффективны, чем классы.