gpt4 book ai didi

c++ - 重置类(class)的最优雅方式

转载 作者:行者123 更新时间:2023-11-28 03:29:47 25 4
gpt4 key购买 nike

对于内部有子类或结构的类,最优雅的重置方式是什么?

class attributes {
public:
std::string address;
short port;
std::vector< std::string > data;
struct Foo foo;
};

什么是循环中最优雅的,默认运算符 = ou 创建一个 Reset 方法来内存 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();
}

其他优雅的建议?

最佳答案

这完全取决于手头的类(class)。通常正确的做法是从头开始创建一个新的或使用类的复制构造函数,但如果它使用昂贵的资源,例如打开一个 IMAP 连接(想到这个例子是因为 IMAP 服务器通常非常严格地限制每个用户允许的连接数),那么这可能会产生非常不希望的副作用。

如果一个类没有零参数构造函数,那么将其“重置”到某个默认状态就没有意义,因此您也需要考虑这一点。

如果确实需要保留有意义的中间状态,请考虑 Memento 设计模式。

关于c++ - 重置类(class)的最优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12901664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com