重置类的最优雅方式
Most elegant way to reset a class
本文关键字:方式 更新时间:2023-10-16
对于一个内部有子类或sctructures的类,最巧妙的重新设置方法是什么?
class attributes {
public:
std::string address;
short port;
std::vector< std::string > data;
struct Foo foo;
};
循环中最优雅的是什么,默认运算符=您创建了一个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();
}
其他优雅的建议?
这完全取决于手头的类。通常,正确的做法是从头开始创建一个新的,或者使用类的复制构造函数,但如果它使用了昂贵的资源,例如打开IMAP连接(这个例子是因为IMAP服务器经常非常严格地限制每个用户允许的连接数),那么这可能会产生非常不必要的副作用。
如果一个类没有零参数构造函数,那么将其"重置"为某个默认状态是没有意义的,所以您也需要考虑这一点。
如果您确实需要保留有意义的中间状态,请考虑Memento设计模式。
相关文章:
- 如何在c++中为模板函数实例创建快捷方式
- 在c代码之间共享数据的最佳方式
- 在C++中将函数压缩为两种方式
- 以螺旋方式打印矩阵的程序.(工作不好)
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 创建引用向量的优雅方式
- Constexpr替代了新的放置方式,可以让内存中的对象保持未初始化状态
- 使用QQuickFramebufferObject时同步数据的最佳方式是什么
- 不同/较旧的处理器运行c++代码的方式是否不同
- 从嵌套在std::映射中的std::列表中删除元素的最佳方式
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- 重载方法的方式会在使用临时调用时生成编译器错误
- 在reactor中存储eventHandlers的最佳方式是什么
- 如何以优化的方式同时迭代两个间距不相等的数组
- 以线程安全的方式调用"QQuickPaintedItem::updateImage(const QImage&image)"(no QThread)
- 为什么C++有不同的变量初始化方式?
- 在AVX通道中混洗的最佳方式
- 如何重新定义MPI_FLOAT,MPI_DOUBLE以 typedef 的方式
- 如何以静态代码分析友好的方式使用 #define 防护?
- 以迭代方式合并标准::unordered_map