复制构造函数快捷方式

时间:2012-06-19 11:47:42

标签: c++ copy-constructor

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

3 个答案:

答案 0 :(得分:6)

我将你的指针包装成一个帮助器类,它以你喜欢的方式完成复制。这样你就可以使用默认的拷贝ctor离开大班。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

如果您只需要一个可以正常清理的浅拷贝,请使用C ++ 11中的shared_ptr或者提升。

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

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