有没有办法强制默认的初始化构造函数用于POD类型。这样所有的值,如整数初始化为零?在POD中强制默认的初始化构造函数?
struct MyPod
{
int a; // whether a is initialized to zero is dependent on creation method
};
struct MyOtherNonPod
{
int b;
MyOtherNonPod() : b(0) // b initialized to zero regardless of creation method
{}
};
MyPod* pod = new MyPod; // pod->a not initialized
MyOhterNonPod* otherPod = new MyOtherNonPod; // otherPod->b is initialized to zero
有没有办法做到这一点,而不必定义构造函数和手动initalize所有varaibles?但相反,只是强制默认的初始化构造函数总是被调用?
MyPod* pod = new MyPod{}; // pod->a is default initialized to zero
有没有办法迫使上述构造函数来不管{}
是否存在或不使用?我的POD类中有很多变量,名称很详细,我宁愿消除类不会被初始化为零的不确定性,这取决于我是否默认初始化。无需手动设置全部。
'MyOtherPod'具有用户指定的构造函数,因此不是POD对象。 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4296.pdf – kfsone
另请参阅:http://ideone.com/zzgItk – kfsone
一个选项是'struct MyPodV:MyPod { MyPodV():MyPod(){}};'。 'MyPodV'不是POD,但基类是,所以可能适合您的需求。 –