对于内部具有子类或结构的类,重采它的最简单方法是什么?
class attributes {
public:
std::string address;
short port;
std::vector< std::string > data;
struct Foo foo;
};
什么是循环中最优雅的,默认运算符= ou创建一个重置方法,记住0结构memset(...)
?
attributes obj, originalStateToResetObj;
for(;;)
//do stuff with obj
obj.address = "172.0.0.1"
//etc
//reseting obj using operator=
obj = originalStateToResetObj;
// OR using Reset?
obj.Reset();
}
其他优雅的建议?
答案 0 :(得分:2)
这完全取决于手头的课程。通常,正确的做法是从头开始创建一个新的或使用类的复制构造函数,但如果它使用昂贵的资源,例如打开IMAP连接(这个例子让我想到,因为IMAP服务器通常会严格限制每个用户允许的连接数),这可能会产生非常不必要的副作用。
如果一个类没有零参数构造函数,那么将它“重置”到某个默认状态就没什么意义了,所以你也需要考虑它。
如果您确实需要保留有意义的中间状态,请考虑Memento设计模式。