结构初始化(用户定义的类型和原语)?

时间:2014-07-14 09:03:53

标签: c++ qt struct

示例:

struct myStruct          //Structure definition
{
    int intPrimitive;
    QStringList object;
};

struct myStruct helloStruct;   //Structure creation

根据我目前的理解,如果没有对intPrimitive进行初始化,它将包含来自给予变量的内存位置的随机值。

是否会在类中定义一个默认构造函数时调用它?如果对象构造函数需要属性(并且应该以每种结构的方式初始化),该怎么办?

2 个答案:

答案 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