Обнуление структуры в конструкторе

Широкий спектр структур используется в программировании Win32. Много раз используются только некоторые из их полей, а все остальные поля обнуляются. Например:

STARTUPINFO startupInfo; // has more than 10 member variables
ZeroMemory( &startupInfo, sizeof( startupInfo ) ); //zero out
startupInfo.cb = sizeof( startupInfo ); //setting size is required according to MSDN
startupInfo.dwFlags = STARTF_FORCEOFFFEEDBACK;
//Now call CreateProcess() passing the startupInfo into it

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

class CStartupInfo : public STARTUPINFO {
public:
   CStartupInfo()
   {
       ZeroMemory( this, sizeof( STARTUPINFO ) );
       cb = sizeof( STARTUPINFO );
       dwFlags = STARTF_FORCEOFFFEEDBACK;
   }
};

Я особенно обеспокоен вызовом ZeroMemory () - похоже, я полностью контролирую код, и у класса нет vtable, и вызов ZeroMemory () безопасен, и между этими двумя фрагментами кода нет большой разницы, за исключением того, что последний обеспечивает абстракция. Есть ли какие-то предостережения?

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

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