声明一个结构初始化它吗?

时间:2015-02-02 16:06:58

标签: c++ struct initialization

当我声明一个结构实例时,它是初始化还是我必须创建一个构造函数?

构造函数会影响性能多少,因为我需要1000个结构的数组?

我需要的结构非常简单,它包含4个整数。我需要将它们初始化为0。

这是我的代码:

struct MyStruct {
    int a;
    int b;
    int c;
    int d;
    MyStruct() : a(0), b(0), c(0), d(0) {}
};

int main() {
    MyStruct array[1000];
}

1 个答案:

答案 0 :(得分:1)

您在main中声明了一个变量,但仅作为定义它的副作用。

所有对象都是默认初始化的,除非你要求别的东西。

尽管如此,这并不像你想象的那么多。默认初始化的基本类型(既不是静态存储也不是线程本地存储)在此之后仍然是不确定的。

但是从不担心,你的类型有一个用户定义的default-ctor,所以默认初始化意味着被调用 当这个值初始化所有成员时,一切都被初始化。

如果是聚合,则会将其初始化为零:

MyStruct array[1000] = {};

关于性能,除了测量和要求编译器对其进行优化之外,没有什么可做的。请记住,最快的代码是不存在的代码。