destructor- все статьи тега


Как справиться с предупреждением "exit-time destructor" в clang?

В моем коде C++11 я получаю предупреждение clang "объявление требует деструктора времени выхода"в следующем случае: static const std::map<int, const someStruct> mymap = { {1, { "A", "B", "C" }}, {2, { "D", "E", "F" }} }; Насколько я понимаю Google, "деструктор времени выхода" необходим для уничтожения main() и статики детерминированным способом, чтобы предотвратить сбои при выходе из-за"уже выпущенных переменных". Это прав ...

Как правильно очистить объект Python?

class Package: def __init__(self): self.files = [] # ... def __del__(self): for file in self.files: os.unlink(file) __del__(self) выше не исключение AttributeError. Я понимаю Python не гарантирует существование "глобальных переменных" (данные членов в этом контексте?), когда __del__() вызывается. Если это так, и это является причиной исключения, как я могу убедиться, что объект разрушается правильно? ...

бросать исключения из деструктора

большинство людей говорят никогда выбросить исключение из деструктора-это приводит к неопределенному поведению. Страуструп подчеркивает, что "вектор деструктор явно вызывает деструктор для каждого элемента. Это означает, что если элемент деструктор бросает, вектор разрушения не удается... На самом деле нет хорошего способа защиты от исключений, вызванных деструкторами, поэтому библиотека не дает никаких гарантий, если деструктор элемента бросает " (из приложения Е3.2). в этой статье кажется, го ...

Зачем нам нужен чистый виртуальный деструктор в C++?

Я понимаю необходимость виртуального деструктора. Но зачем нам нужен чистый виртуальный деструктор? В одной из статей на C++ автор упомянул, что мы используем чистый виртуальный деструктор, когда хотим сделать класс абстрактным. но мы можем сделать класс абстрактным, сделав любую из функций-членов чисто виртуальной. Так что мои вопросы когда мы действительно сделаем деструктор чисто виртуальным? Кто-нибудь может дать хорошее Реальное время например? когда мы создаем абстрактные классы, э ...

Почему нет RAII in.NET?

будучи в первую очередь разработчиком C++ отсутствие RAII (сбор ресурсов является инициализацией) в Java и .NET всегда беспокоило меня. Дело в том, что бремя очистки перемещается от класса writer к его потребителю (с помощью try finally или .NET using построить), кажется, заметно уступает. Я вижу, почему в Java нет поддержки RAII, так как все объекты расположены в куче и сборщике мусора по своей сути не поддерживает детерминированное разрушение, но в .NET с введением типов значений (struct) у н ...