在C ++中,当我有一个像
struct myStruct
{
int i;
bool b;
MyClass *myobj;
};
然后我做一个向量
std::vector<myStruct> myVector;
然后用
myVector.resize(10);
是否将结构的成员初始化为零(包括指针)?我可以不假设这种结构成员中是否可能存在随机数据?
在这种情况下,由于的属性,答案为是std::vector::resize()
:
If the current size is less than count, additional elements are appended and initialized with copies of value. (until C++11)
If the current size is less than count, (since C++11)
1) additional value-initialized elements are appended
2) additional copies of value are appended
对于正常情况,答案将是“否”,例如myStruct s
,这将使它们(s.i, s.bool, s.myobj
)的值不确定。
如果仍然希望按预期方式对其进行初始化,请为该结构创建一个构造函数:
struct myStruct {
int i;
bool b;
MyClass *myobj;
myStruct():i(0),b(false),myobj(NULL) { } // <- set them here by default
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句