簡體   English   中英

memcpy和C ++類模板 - 如何使用它?

[英]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.

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