相关疑难解决方法(0)

有没有办法使C++结构值初始化所有POD成员变量?

假设我有一个包含POD和非POD成员变量的C++结构:

struct Struct {
    std::string String;
    int Int;
};
Run Code Online (Sandbox Code Playgroud)

为了让我的程序产生可重现的行为,我希望在构造时初始化所有成员变量.我可以使用初始化列表:

 Struct::Struct() : Int() {}
Run Code Online (Sandbox Code Playgroud)

问题是我需要更改我的结构并添加一个新的POD成员变量(比如说bool Bool)我冒险忘记将其添加到初始化列表中.然后在结构构造期间不会对新成员变量进行值初始化.

我也不能使用这个memset()技巧:

Struct::Struct()
{
   memset( this, 0, sizeof( *this ) ); //can break non-POD member variables
}
Run Code Online (Sandbox Code Playgroud)

因为调用memset()覆盖已经构造的非POD成员变量会破坏它们.

有没有办法在没有显式添加初始化的情况下强制执行所有POD成员变量的值初始化?

c++ constructor initialization

7
推荐指数
2
解决办法
3216
查看次数

包含原始类型的struct容器,零初始化?

#include <vector>
struct S { int x; };
std::vector<S> v;
int main() { v.resize(1000); return v[42].x; }
Run Code Online (Sandbox Code Playgroud)

上述程序是否保证在C++ 14中返回0?为什么?

c++ c++14

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

标签 统计

c++ ×2

c++14 ×1

constructor ×1

initialization ×1