0

据我了解,如果我有一个具有 boost::scoped_ptr 成员变量的类,并且如果我要复制该类的一个实例并希望新实例的 scoped_ptr 成员指向第一个所指向的实例,我必须实现一个自定义复制构造函数(和赋值运算符),并对 scoped_ptr 指向的任何内容进行显式深度复制。如果智能指针类型有一个复制构造函数来做这件事,那就太好了。

c++ boost / stl库中是否没有类似的智能指针已经内置了深拷贝功能,所以当智能指针被复制时,它指向的对象也会被复制?至少作为一种选择?

(如果有这样的指针,在我的情况下,指针将不得不更多地了解它应该如何创建新对象,因为我指向的对象属于多态类,具有虚拟 Clone() 函数。如果智能指针不能'没有隐含地弄清楚如何进行深度复制,客户端代码可能已经提供了一个函数指针或指向克隆函数或任何应该使用的工厂创建函数的东西。我猜这个新对象如何创建的复杂性可能是一个毕竟没有指针具有深层复制功能的原因..?)

4

1 回答 1

4

据我所知,标准库中没有智能指针实现您想要的语义。

但是,MNMLSTC 核心库提供了两个智能指针(即core::poly_ptrcore::deep_ptr),它们应该适合您的用例。特别是因为虚成员函数的存在,相信core::poly_ptr是你所需要的。

于 2016-07-27T07:22:14.010 回答