当我声明一个结构实例时,它是初始化的还是必须构造一个构造函数?
因为我需要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] = {};
关于性能,除了测量并要求编译器对其进行优化之外,别无他法。请记住,最快的代码就是不存在的代码。