[英]memcpy and C++ class templates - how to use it?
那么......我們如何調用memcpy(dataCopy,data,length)之類的東西; 復制抽象數據T?
或者如果抽象T不安全,我們就知道T是一個POD(普通舊數據,基本上是一個C結構) - 是否可以復制它?
你的意思是為一些任意的C ++類型T
嗎? 除非您知道T
是POD(普通舊數據,基本上是C結構)類型,否則使用memcpy
復制類型為T
對象是不安全的。 例如,這會阻止T
的拷貝構造函數運行,這可能導致不正確的拷貝(例如,嘗試memcpy
std::vector
不會復制數據緩沖區)。
你無法可靠地做到這一點。 如果它如此簡單,可能和可靠,那么程序員就不會重載operator=()
並編寫copy-constructor。
如果你想復制你的對象,那么要么重載operator=()
,要么寫copy-constructor,或者兩者都做!
根據T的類型,這可能是危險的。如果T是POD類型,那么一切都很好。 否則,我建議您只需調用T的復制構造函數(或者如果不可能則使用克隆模式)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.