Pee*_*oot 7 c++ initialization
我知道memset对class初始化不满意.例如,类似以下内容:
class X { public:
X() { memset( this, 0, sizeof(*this) ) ; }
...
} ;
Run Code Online (Sandbox Code Playgroud)
vtbl如果virtual混合中有一个功能,它会破坏它.
我正在开发一个(巨大的)遗留代码库,它是C-ish但是用C++编译,因此所有成员都是POD,不需要传统的C++构造函数.C++的使用逐渐深入(比如虚函数),这就咬了开发人员没有意识到memset有这些额外的C++牙齿.
我想知道是否有一个C++安全的方法来进行初始的全部零初始化,然后可能会跟着特定的成员初始化,其中零初始化是不合适的?
我在C++中找到了用于初始化的类似问题memset,并使用memset将派生结构归零.这两个都有"不使用memset()"答案,但没有好的替代方案(特别是对于可能包含许多成员的大型结构).