【问题标题】:Visual C++ good way to do deep copy?Visual C++ 做深拷贝的好方法?
【发布时间】:2013-10-22 00:58:14
【问题描述】:

我有一个类似这样的结构

struct
{
  struct bar x;
}foo

struct
{
  DWORD count;
  MyType* arr;
}bar

现在我想做一个 foo 实例的深拷贝,我正在查看一个来自 msdn (http://msdn.microsoft.com/en-us/library/windows/desktop/aa366535(v=vs.85).aspx) 的函数,称为
void CopyMemory( In PVOID Destination, In const VOID *Source, In SIZE_T Length );

虽然我认为这不会为我做一个深拷贝,但在这种情况下,做一个安全的深拷贝的好方法是什么?

【问题讨论】:

  • 如果您使用 C++,只需为 bar 定义一个复制构造函数。毕竟,正确遵守三法则是责任。更好的是,将bar 替换为std::vector<MyType>,因为这个轮子已经被发明出来了。

标签: c++ visual-c++ c++11 copy deep-copy


【解决方案1】:

我建议创建一个复制构造函数,您将在其中将源对象中的每个变量分配给目标对象。对于指针,使用new关键字来分配内存来存储对象,而不是仅仅复制对象的地址。

更多关于拷贝构造函数的参考,参考http://www.tutorialspoint.com/cplusplus/cpp_copy_constructor.htm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 2017-03-18
    • 1970-01-01
    • 2011-04-26
    • 2012-04-12
    相关资源
    最近更新 更多