簡體   English   中英

類Logger可復制和移動是否有意義?

[英]Does it make sense for a class Logger to be copyable and movable?

我最近在這里問很多問題。 我正在考慮語義。

沒有什么使復制或移動變得困難,實際上,它只有一個成員函數log()而沒有數據成員(可能在將來)。 但是在我看來,這種對象是可復制和可移動的在邏輯上是不正確的。

如果您打算在整個過程中僅使用一次登錄,則使用靜態對象,而無需復制和刪除對象

如果您打算使用有限數量的對象(例如,每個日志記錄級別一個),並且這些對象很重(大型緩沖區,odbc連接),那么值得擁有一個可移動且可復制的類。

但是,您不能在可復制的類中具有互斥鎖,因為該互斥鎖不可復制。

簡短的答案:記錄器有點像輸出流,因此與記錄流相同。 可移動但不可復制。

長答案:這分為兩個決定,每個決定分為兩個部分:

  • 我應該制作這種類型的記錄器界面,確保可復制和可移動嗎?

可以預見,將來的記錄器類型將包含流或互斥體,這意味着該接口不應保證可復制,因為那些東西是不可復制的。 記錄器的vector可能有一定意義,因此,如果您沒有看到特定的原因,使記錄器可移動並不是完全沒有意義的。

  • 我該使該類可復制和移動嗎?

可能沒關系,只是您說計划在將來添加數據成員。 也就是說,您將修改此logger類,而不是編寫滿足相同基本接口且日志消息接收器不同的新logger類。 如果您確定這是明智的 ,那么出於這個原因,與該類相同的注意事項也適用於該接口:不要使其可復制。 Movable可能不會造成任何傷害,並且會帶來一些好處。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM