3

我有一个大约有 50 名成员的班级。其中1个是指针。所以,自然我必须创建自己的复制构造函数,复制所有内容并创建该对象的新实例。我的问题是:是否有一种快捷方式或某种特殊方法可以复制所有内容(就像默认的复制构造函数一样),然后只处理那个指针?而不是手动复制每个成员。

4

3 回答 3

6

我会将您的指针包装到一个帮助类中,该类以您喜欢的方式进行复制。这样,您就可以使用默认的复制 ctor 离开大类。

于 2012-06-19T11:50:58.540 回答
0

既然您说默认副本不起作用,我将假设您的对象拥有指针。

如果您只需要一个正确清理的浅拷贝,请使用shared_ptrC++11 或 boost。

如果您需要深拷贝,我首先建议通过值而不是指针来存储包含的对象。然后您就可以免费获得副本,而且您不必担心额外的一组内存管理。

最后,如果这些都不是一个选项,我会编写一个处理深拷贝语义的指针包装器(我不相信 boost 提供这样的类)。

于 2012-06-19T13:31:41.020 回答
0

改用智能指针,然后依赖类的默认复制构造函数。

标准智能指针 ( unique_ptr, shared_ptr) 没有可以复制其对象的复制构造函数,但您可以汇总自己的。

于 2012-06-19T11:52:24.773 回答