当我声明一个结构实例时,它是初始化还是我必须创建一个构造函数?
构造函数会影响性能多少,因为我需要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];
}
答案 0 :(得分:1)
您在main
中声明了一个变量,但仅作为定义它的副作用。
所有对象都是默认初始化的,除非你要求别的东西。
尽管如此,这并不像你想象的那么多。默认初始化的基本类型(既不是静态存储也不是线程本地存储)在此之后仍然是不确定的。
但是从不担心,你的类型有一个用户定义的default-ctor,所以默认初始化意味着被调用 当这个值初始化所有成员时,一切都被初始化。
如果是聚合,则会将其初始化为零:
MyStruct array[1000] = {};
关于性能,除了测量和要求编译器对其进行优化之外,没有什么可做的。请记住,最快的代码是不存在的代码。