创建100多个newObj时的速度更快:
//initialization list
struct struct_Obj {
...tonsOfVars
struct_Obj() : tonsOfVars(init) {}
}
或者:
//static const already constructed, call the copy constructor(?)
static const struct_Obj defaultStruct_Obj = { tonsOfVars(init) };
struct_Obj newObj = defaultStruct_Obj
TonsOfVars意味着多个不同的变量(从POD到结构/类)
我会假设静态const,因为它调用复制构造函数(意思是1操作?)vs调用初始化列表中的每个初始化程序?
虽然对此的常见反应是“描述它”,但即使这样做也不会给我一个解释为什么它更快。
答案 0 :(得分:0)
这实际上取决于tonsOfVars
中的类型。
我会假设静态const,因为它调用复制构造函数(意思是1 op?)vs调用initalization列表中的每个初始化器?
它正在为struct_Obj
调用一个复制构造函数,但它仍然需要为每个字段调用复制构造函数。
如果它们都是POD数据,则根本没有区别。但是,在某些类型中,默认构造函数可能比复制构造函数更快(或更慢),因此这会产生影响。
答案 1 :(得分:0)
我认为这取决于tonsOfVars的构造函数与tonsOfVars的复制构造函数的速度,如果它们都是编译器生成或执行浅拷贝,那么我无法想到为什么初始化列表不会更快。
取决于tonsOfVars的类型,编译器的优化也可以有所作为。