相关疑难解决方法(0)

如何在不破坏vtbl的情况下完成相当于memset(this,...)的操作?

我知道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()"答案,但没有好的替代方案(特别是对于可能包含许多成员的大型结构).

c++ initialization

7
推荐指数
1
解决办法
3489
查看次数

标签 统计

c++ ×1

initialization ×1