结构初始化(用户定义的类型和基元)



示例:

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

相关内容

  • 没有找到相关文章

最新更新