那么..我们怎么称呼这样的东西 memcpy(dataCopy,data,length);复制抽象数据T?
或者,如果抽象T不安全,我们就知道T是POD(普通旧数据,基本上是C结构) - 是否可以复制它?
答案 0 :(得分:3)
你的意思是为一些任意的C ++类型T
工作吗?除非您知道T
是POD(普通旧数据,基本上是C结构)类型,否则使用T
复制memcpy
类型的对象是不安全的。例如,这会阻止T
的复制构造函数运行,这可能导致错误的复制(例如,尝试memcpy
std::vector
不会复制数据缓冲区。
答案 1 :(得分:3)
你 cant 可靠地做到这一点。如果它如此简单,可能和可靠,那么程序员就不会重载operator=()
并编写复制构造函数。
如果你想复制你的对象,那么要么重载operator=()
,要么写一个copy-constructor,或者两者都做!
答案 2 :(得分:0)
这可能很危险,具体取决于T的类型。如果T是POD类型,那么一切都很好。否则,我建议您只需调用T的复制构造函数(或者如果不可能则使用克隆模式)。