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

因为我需要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];
}

最佳答案

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

并且所有对象都是默认初始化的,除非您要求其他内容。

不过,这还不如您想做的那么多。默认初始化的基本类型既不在静态中也不在线程本地存储中,但在此之后仍不确定。

但不要担心,您的类型具有用户定义的default-ctor,因此default-initialization意味着可以调用它。
随着该值初始化所有成员,一切都将初始化。

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

MyStruct array[1000] = {};

关于性能,除了测量并要求编译器对其进行优化之外,别无他法。请记住,最快的代码就是不存在的代码。

10-04 14:05
查看更多