示例:
struct myStruct //Structure definition
{
int intPrimitive;
QStringList object;
};
struct myStruct helloStruct; //Structure creation
根据我目前的理解,如果不对intPrimitive
进行初始化,它将包含一个来自给定变量的内存位置的随机值。
是否会像在类中定义默认构造函数那样调用默认构造函数?如果对象构造函数需要属性(并且应该以这种方式对每个结构进行初始化(,该怎么办?
是的,将调用默认构造函数,在这种情况下,它将创建一个空的QStringList。
struct myStruct
{
int intPrimitive;
QStringList object;
};
struct myStruct helloStruct;
qDebug() << myStruct.object; // ()
qDebug() << myStruct.intPrimitive; // 1
注意:还不知道最后一个答案。如果你知道的话,请编辑答案,我已经把它做成了一个社区维基。
对于第二个问题,如果您提供任何类型的构造函数,编译器将不会为您生成默认构造函数。
如果你有一个需要参数的特殊构造函数,如果可以创建一个没有参数的实例,你也应该创建默认构造函数。
示例:
struct Foo
{
int a;
Foo(int aa) : a(aa) {}
};
Foo foo1(123); // Okay, uses the special constructor
Foo foo2; // Error, no default constructor