Can I destruct a structure in C++?

Is there a way to destruct a structure (not a class)?

17
задан Ramilol 17 August 2010 в 21:53
поделиться

4 ответа

В C++ структура точно такая же, как класс, за исключением видимости по умолчанию для членов и баз. Поэтому, если существует способ "уничтожить" класс, вы можете использовать точно такой же способ для "уничтожения" структуры.

Так, если в вашей программе на C++ есть struct s { }, вы можете сделать следующее:

s *v = new s();
delete v; // will call structure's destructor.
30
ответ дан 30 November 2019 в 10:58
поделиться

За исключением спецификатора доступа по умолчанию ("частный" для класса, "общедоступный" для структуры), все остальное в C ++ классе и структуре. Итак, ДА, вы можете писать и использовать деструкторы в структуре так же, как это делается в классе.

9
ответ дан 30 November 2019 в 10:58
поделиться

Структуры идентичны классам, за исключением того, что по умолчанию видимость и наследование являются общедоступными (а не частными).

Таким образом, вы можете создавать и уничтожать структуры точно так же (как класс или встроенный тип):

// 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;
5
ответ дан 30 November 2019 в 10:58
поделиться

Структуры и классы - это одно и то же, есть просто техническая разница (поле доступа по умолчанию), которая возникает из-за концептуальной разницы между ними. Однако каждая структура, такая как класс, вызывает свои конструкторы, когда объекты должны быть созданы, и свой деструктор, когда ее поле видимости заканчивается.

В C ++ структуры не менее мощны, чем классы.

2
ответ дан 30 November 2019 в 10:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: