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