Результаты поиска по запросу "destructor"

5 ответов

да, с -fno-elide-constructors я вижу все деструкторы

#include <iostream> using namespace std; class Test { public: Test() { printf("construct ..\n"); } ~Test() { printf("destruct...\n"); } }; Test Get() { Test t = Test(); return t; } int main(int argc, char *argv[]) { Test t = Get(); return 0; ...

2 ответа

Спасибо за ваше ясное объяснение в сочетании с довольно простым для понимания примером. В случае, если задействовано виртуальное наследование, ответственность за создание объекта виртуального базового класса лежит на самом производном классе. Что касается других классов, кроме самого производного, предполагается, что они конструируются неконтролируемым конструктором, поэтому они не касаются виртуального базового класса.

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

1 ответ

Почему бы просто не использовать

вонкеfile_put_contents() внутри деструктора, это приводит к записи файлов вSERVER_ROOT... (Yikes!) Обходные пути? tldr: Я хочу кэшировать массив, возможно, содержащий сериализованные экземпляры классов. Я решил, что сейчас я бы написал класс, ...

ТОП публикаций

4 ответа

Ах, прости @iammilind :)

char * buf = new char[sizeof(T)]; new (buf) T; T * t = (T *)buf; //code... //here I should destruct *t but as it is argument of template and can be //instantiated via basic types as well (say int) so such code /*t->~T();*/ //is incorrect (maybe ...

1 ответ

Уничтожены ли местные жители до или после вычисления возвращаемого значения функции?

Я думаю о создании класса, который представляетвладение примитива синхронизации, что-то вроде этого: class CCriticalSectionLock { public: CCriticalSectionLock( CCriticalSection &cs ) : cs( cs ) { cs.Enter(); } ~CCriticalSectionLock() { ...

3 ответа

", но OP не определяет шаблонный деструктор.

у явно уничтожитьvector в шаблонном контексте. У меня работает следующее (GNU C ++ 4.3, 4.4 и Clang ++ 1.1): template <typename T> void destroy_vector_owner(VectorOwner<T> *obj) { obj->v.~vector(); // further cleanup by Python API functions ...

3 ответа

 выполнить эту обязанность (т.е. в этом случае в операторе if).

я двигаюсь-конструируюa изbэто все ещенеобходимо разрушатьbили я могу уйти без этого? Этот вопрос приходил мне в голову во время реализацииoptional<T> шаблон. Выдержка: ~optional() { if (initialized) { reinterpret_cast<T*>(data)->~T(); } ...

2 ответа

 принадлежит узлу, но LinkedList

оего текущего упражнения я изучаю связанные списки и деревья. Недавно я увидел предложение рекурсивно уничтожать структуры данных, заставляя каждый узел удалять своих потомков / потомков. Однако почти во всех примерах, которые я обнаружил, ...

3 ответа

 место для этого Конечно, это скорее соглашение, чем абсолютное требование, но зачем изобретать велосипед (C ++, Java и т. Д.)? PHP не только для веб-страниц, поэтому мы должны помнить об этом.

оводстве сказано, что Метод деструктора будет вызван, как только будут удалены все ссылки на конкретный объект или когда объект будет явно уничтожен или в любом порядке в последовательности выключения. Разве PHP GC недостаточно? Может ли ...

1 ответ

Почему запрещено брать адрес деструктора?

Стандарт C ++ в 12.4.2 гласит, что [...] Адрес деструктора не берется. [...] Тем не менее, можно без каких-либо жалоб со стороны компилятора взять адрес оболочки вокруг деструктора класса, например так: struct Test { ~Test(){}; void ...