Вопросы с тегом «destructor»

1488
Когда использовать виртуальные деструкторы?

У меня есть четкое понимание большинства ОО-теорий, но меня смущает одна вещь - виртуальные деструкторы. Я думал, что деструктора всегда называют независимо от того, что и для каждого объекта в цепочке. Когда вы собираетесь сделать их виртуальными и...

594
Есть ли деструктор для Java?

Есть ли деструктор для Java? Кажется, я не могу найти никакой документации по этому вопросу. Если нет, как я могу достичь того же эффекта? Чтобы сделать мой вопрос более конкретным, я пишу приложение, которое работает с данными, и в спецификации говорится, что должна быть кнопка «сброс», которая...

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

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

351
Нужно ли явно вызывать базовый виртуальный деструктор?

При переопределении класса в C ++ (с помощью виртуального деструктора) я снова реализую деструктор как виртуальный в классе наследования, но нужно ли вызывать базовый деструктор? Если так, я представляю, что-то вроде этого ... MyChildClass::~MyChildClass() // virtual in header { // Call to base...

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

Большинство людей говорят, что никогда не выбрасывают исключение из деструктора - это приводит к неопределенному поведению. Страуструп подчеркивает, что «векторный деструктор явно вызывает деструктор для каждого элемента. Это означает, что, если деструктор элемента выбрасывает, векторное разрушение...

165
Почему я должен объявлять виртуальный деструктор для абстрактного класса в C ++?

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

165
Вызывает ли удаление указатель на подкласс деструктор базового класса?

У меня есть, class Aкоторый использует выделение кучи памяти для одного из своих полей. Класс A создается и сохраняется как поле указателя в другом классе ( class B. Когда я закончу с объектом класса B, я вызываю delete, который, я полагаю, вызывает деструктор ... Но вызывает ли это и деструктор...

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

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

120
Как уничтожить объект?

Насколько я знаю (что очень мало), есть два способа: $var = new object() Затем: // Method 1: Set to null $var = null; // Method 2: Unset unset($var); Другой лучший способ? Я тут волосы

118
Когда вызывается деструктор C ++?

Основной вопрос: когда программа вызывает метод деструктора класса в C ++? Мне сказали, что он вызывается всякий раз, когда объект выходит за пределы области видимости или подвергаетсяdelete Более конкретные вопросы: 1) Если объект создается с помощью указателя, и этот указатель позже удаляется или...

101
В чем разница между использованием IDisposable и деструктора в C #?

Когда я могу реализовать IDispose в классе, а не деструктор? Я прочитал эту статью , но все еще не понимаю сути. Я предполагаю, что если я использую IDispose для объекта, я могу явно «разрушить» его, а не ждать, пока сборщик мусора сделает это. Это верно? Означает ли это, что я всегда должен явно...

98
В C # в чем разница между деструктором и методом Finalize в классе?

В чем разница, если она есть, между деструктором и методом Finalize в классе? Недавно я обнаружил, что Visual Studio 2008 считает деструктор синонимом метода Finalize, а это означает, что Visual Studio не позволит вам одновременно определять оба метода в классе. Например, следующий фрагмент кода:...

91
GNU GCC (g ++): почему он генерирует несколько dtors?

Среда разработки: GNU GCC (g ++) 4.1.2 Пока я пытаюсь исследовать, как увеличить «покрытие кода - особенно покрытие функций» в модульном тестировании, я обнаружил, что некоторые из классов dtor, похоже, генерируются несколько раз. Кто-нибудь из вас знает почему, пожалуйста? Я попробовал и заметил...

89
shared_ptr магия :)

Мы с мистером Лидстремом поссорились :) Г-н Лидстрём утверждает, что конструкция shared_ptr<Base> p(new Derived);не требует наличия виртуального деструктора в Base: Армен Цирунян : «Правда? Будет ли shared_ptr правильно очищаться? Не могли бы вы в этом случае продемонстрировать, как этот...

84
Всегда ли вызов деструктора вручную является признаком плохого дизайна?

Я подумал: мол, если вы вызываете деструктор вручную - вы что-то делаете не так. Но всегда ли так? Есть контрпримеры? Ситуации, когда необходимо вызвать его вручную или когда этого трудно / невозможно / нецелесообразно избежать?...