最近我在这里问了很多问题。我正在考虑语义学。
没有什么会使复制或移动它变得困难,事实上,它只有一个成员函数log(),没有数据成员(可能在将来)。但在我看来,这种类型的对象是可复制和可移动的,这在逻辑上是不正确的。
发布于 2014-03-18 03:54:58
如果您计划在整个过程中只有一个登录,则使用静态对象,不需要复制和删除对象
如果您计划拥有有限数量的对象(例如,每个日志级别一个对象),并且这些对象很重(大缓冲区,odbc连接),那么值得拥有一个可移动和可复制的类。
但是,在可复制类中不能有互斥锁,因为互斥锁是不可复制的。
发布于 2014-03-18 04:59:04
简而言之:记录器有点像输出流,所以对流也是一样的。可移动的但不可复制的。
长篇答案:这分为两个决定,每个决定分成两个部分:
未来的记录器类型将可预测地包含流或互斥锁,这意味着接口不应该保证可复制,因为这些东西是不可复制的。记录器的vector
可能有一定的意义,因此,如果您没有看到不能移动记录器的具体原因,那么使记录器可移动并不是完全没有意义的。
这可能无关紧要,除非您说您计划在将来添加数据成员。也就是说,您将修改这个记录器类,而不是编写新的记录器类,这些记录器类使用不同的日志消息接收器满足相同的基本接口。如果你确定这是明智的,那么出于这个原因,同样的注意事项也适用于这个类,就像接口一样:不要让它成为可复制的。Movable可能不会有任何坏处,但也会带来一些小小的好处。
https://stackoverflow.com/questions/22463985
复制相似问题