复制构造函数快捷方式

Copy constructor shortcut

本文关键字:快捷方式 构造函数 复制      更新时间:2023-10-16

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

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

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

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

既然你说默认副本不起作用,我就假设你的对象拥有 pointee。

如果您只需要一个可以正确清理的浅拷贝,请使用 C++11 或 boost 中的shared_ptr

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

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