【问题标题】:deep copy pointer of a struct object in c++c++中结构对象的深拷贝指针
【发布时间】:2016-12-18 07:17:42
【问题描述】:

我有以下类型的结构:

struct SPacket
{
    unsigned char payload[260]; 
    unsigned int payloadLength; 
}; 

我有一个指向这个结构的指针对象:

SPacket* ptrObj; 

如何将 ptrObj 的深拷贝执行到另一个对象中:

SPacket obj;  

【问题讨论】:

标签: c++ pointers structure deep-copy


【解决方案1】:

编译器生成的复制构造函数会对数组成员进行深度复制,所以只需使用它:

SPacket obj(*ptrObj);

【讨论】:

  • +1 但可能需要注意,这仅适用于未在堆上分配的固定大小数组。
  • 错误,运算符*不匹配
  • @jaycode:如果您收到该错误,您可能没有指针 :)
  • 我可以确认。当 ptrObj 是一个引用(内部只是一个指针)时,应该没有星号。
【解决方案2】:

解决方法极其简单:使用复制构造函数:

SPacket obj = *ptrObj;

这将调用(隐式)复制构造函数。

【讨论】:

  • 这样在 C 中也可以工作,不(在添加 struct 之后)?
  • @juanchopanza 我想是的,它会的。我的介绍的意思是复制构造函数应该是第一个想法
  • 但解决方案在C语言中也极其简单。
  • @juanchopanza 在这种情况下,是的,它是一样的。但是如果你在类型中有指针,你就需要一个复制/克隆函数。
  • 那么无论如何你都必须在 C++ 中实现一个复制构造函数。
猜你喜欢
  • 1970-01-01
  • 2022-01-09
  • 1970-01-01
  • 2010-12-16
  • 2015-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-28
相关资源
最近更新 更多