Я решил эту проблему, установив правильные значения json
{
"qps": 30,
"force_push": false
}
Вместо «ложь» в строковой записи я указал «ложь». Сейчас десериализация работает.
delete this
законно и делает то, что Вы ожидали бы: это называет деструктор Вашего класса, и освободите базовую память. После delete this
возвраты, Ваш this
значение указателя делает не изменение, таким образом, это - теперь висячий указатель, который должен не быть разыменованным. Это включает неявное разыменование с помощью членских переменных класса.
обычно находится в считаемых на ссылку классах это, когда касательно количества постепенно уменьшается к 0, DecrementRefCount()
/ Release()
/ безотносительно вызовов функции членства delete this
.
delete this
обычно считается очень невоспитанностью по многим причинам. Легко случайно получить доступ к членским переменным после delete this
. Код вызывающей стороны не мог бы понять, что Ваш объект самоликвидировался.
кроме того, delete this
"запах кода", что Ваш код не мог бы иметь симметричной стратегии монопольного использования объекта (кто выделяет и кто удаляет). <забастовка>, которую объект, возможно, не выделил сам с new
, таким образом звоня delete this
средства, что класс A выделяет объект, но класс B, позже освобождает его [сам]. забастовка>
Безопасно удалить "это", пока это - по существу последняя операция в методе. На самом деле несколько профессиональных API уровня делают так (см. реализацию CComObject ATL для примера).
единственная опасность пытается получить доступ к любым другим членским данным после того, как вызов "удалит это". Это, конечно, небезопасно.
Удалите это совершенно законно, как другие уже упомянули. Это опасно по одной дополнительной причине, которая еще не была упомянута - Вы предполагаете, что объект был выделен на "куче". Это может быть трудно гарантировать, хотя в случае подсчета ссылок реализации обычно не являются проблемой.
Как указано другими, удалите, это - допустимая идиома, но чтобы было безопасно, что необходимо удостовериться, что объект никогда не инстанцируют на стеке.
Один способ сделать это должно сделать и конструктора и деструктор частными и осуществить создание объекта через функцию фабрики классов, которая создает объект на "куче" и возвращает указатель на него. Фабрика классов может быть статической функцией членства или другом функция. Очистка может затем быть сделана посредством Удаления () метод на объекте, который делает, "удаляют это". COM-объекты в основном прокладывают себе путь за исключением того, что, кроме того, они - ссылка, считаемая с, "удаляют это" появление, когда подсчет ссылок постепенно уменьшается для обнуления.
Да. Это должно прекрасно подойти. "Это" - просто указатель. Любой указатель сделает для, удаляют. Информация о том, как удалить объект, содержится в записях "кучи". Это то, как IUnknown:: Выпуск () обычно реализуется в COM-объектах.
удалите это может вызвать проблему, когда у Вас есть подклассы объекта, Вы удаляете. Помните, что конструкция начинает с вершины вниз, и удаление начинает с вверх дном. Таким образом, если удаляют, это посреди иерархии, Вы в основном потеряли все объекты ниже этого конкретного класса.
удаляют, это прибывает очень удобное при реализации ссылки считаемый объект примером которого являются COM-классы.
Read для подобного обсуждения. Ваше понимание является правильным в этом, оно действительно работает, необходимо и может быть опасно, так как Вы не можете получить доступ к этому впоследствии.