В простом C обычно происходит сброс структуры после создания экземпляра:
struct MyClass obj;
memset( &obj, 0, sizeof(struct MyClass) );
Это удобно - особенно при использовании объектно-ориентированной парадигмы, поскольку гарантируется сброс всех элементов на ноль и т. Д., Независимо от того, сколько членов добавлено со временем.
Я ищу способ сделать то же самое в C ++. Очевидно, вы не можете просто сбросить память, поскольку vtable является ее частью. Кроме того, в моем конкретном случае я не могу использовать шаблоны.
Я видел одно решение - объявить структуру с всеми членами, которые вы, в свою очередь, можете сбросить одним ударом:
class MyClass{
MyClass(){ memset(&m, 0, sizeof(m)); }
struct{
int member;
} m;
};
Однако я не очень люблю это решение.
Я полагаю, что доступны "хаки", и если вы их знаете, пожалуйста, также расскажите о рисках его использования, например, если это может отличаться между компиляторами и т. д.
Спасибо