Как сделать эквивалент memset (это, ...), не заглушая vtbl?

Я знаю, что memset не одобряется дляclass инициализация. Например, что-то вроде следующего:

class X { public: 
X() { memset( this, 0, sizeof(*this) ) ; }
...
} ;

забьетvtbl если там'сvirtual функция в миксе.

Я работаю над (огромной) унаследованной кодовой базой, которая написана на языке C, но скомпилирована в C ++, поэтому все рассматриваемые члены обычно являются POD и не требуют традиционных конструкторов C ++. Использование C ++ постепенно распространяется (как виртуальные функции), и это кусает разработчиков, которые неЯ не понимаю, что у memset есть эти дополнительные зубы C ++.

Интересно, существует ли безопасный для C ++ способ начальной инициализации с нулевым перехватом, который может сопровождаться определенной инициализацией по элементам, где нулевая инициализация не является 'не подходит?

Я нахожу похожие вопросыmemset для инициализации в C ++, а такжеобнуление производной структуры с использованием memset, У обоих естьдон»не использовать memset () " ответы, но нет хороших альтернатив (особенно для больших структур, потенциально содержащих много членов).

Ответы на вопрос(7)

Ваш ответ на вопрос