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