4

所以..我们如何调用 memcpy(dataCopy, data, length); 复制抽象数据 T?

或者,如果抽象 T 不安全,可以说我们知道 T 是 POD(普通旧数据,基本上是 C 结构) - 是否可以复制它?

4

3 回答 3

3

你的意思是为一些任意的 C++ 类型工作T吗?除非您知道这T是 POD(普通旧数据,基本上是 C 结构)类型,否则T使用memcpy. 这将阻止T' 的复制构造函数运行,例如,这可能导致不正确的复制(例如,尝试memcpy复制std::vector数据缓冲区不会复制)。

于 2011-01-23T04:33:18.737 回答
3

不能可靠地做到这一点。如果它如此简单、可行和可靠,那么程序员就不会重载operator=()和编写复制构造函数。

如果你想复制你的对象,那么要么重载operator=(),要么编写复制构造函数,或者两者都做!

于 2011-01-23T04:36:22.107 回答
0

根据 T 的类型,这可能很危险。如果 T 是 POD 类型,那么一切都很好。否则,我建议您只需调用 T 的复制构造函数(如果不可能,则使用克隆模式)。

于 2011-01-23T04:35:57.427 回答