有沒有辦法強制默認的初始化構造函數用於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,但基類是,所以可能適合您的需求。 –