假设我有一个对象,其成员的构造成本很高,并且需要一个reset()
将其重置为其初始状态的函数:
struct Example
{
// option 1: efficient, but need to duplicate initialization logic of reset()
Example(int param) : expensive_member_(param), param_(param)
{
}
/* option 2: less code, but initializes expensive_member_ twice
Example(int param) : param_(param)
{
reset();
}*/
void reset()
{
expensive_member_ = ClassWithExpensiveConstructor(param_);
}
ClassWithExpensiveConstructor expensive_member_;
int param_;
}
是否有更好的方法/模式可以有效地将对象重置为其初始状态,而无需复制初始化程序列表和reset
函数中的初始化逻辑?
编辑:如果没有实现我想要的通用方法,那也是这个问题的可接受结果!