所以..我们如何调用 memcpy(dataCopy, data, length); 复制抽象数据 T?
或者,如果抽象 T 不安全,可以说我们知道 T 是 POD(普通旧数据,基本上是 C 结构) - 是否可以复制它?
你的意思是为一些任意的 C++ 类型工作T吗?除非您知道这T是 POD(普通旧数据,基本上是 C 结构)类型,否则T使用memcpy. 这将阻止T' 的复制构造函数运行,例如,这可能导致不正确的复制(例如,尝试memcpy复制std::vector数据缓冲区不会复制)。
你不能可靠地做到这一点。如果它如此简单、可行和可靠,那么程序员就不会重载operator=()和编写复制构造函数。
如果你想复制你的对象,那么要么重载operator=(),要么编写复制构造函数,或者两者都做!
根据 T 的类型,这可能很危险。如果 T 是 POD 类型,那么一切都很好。否则,我建议您只需调用 T 的复制构造函数(如果不可能,则使用克隆模式)。