据我了解,如果我有一个具有boost :: scoped_ptr成员变量的类,并且我要复制该类的实例并希望新实例让其scoped_ptr成员指向副本第一个实例指出的是,我必须实现一个自定义复制构造函数(和赋值运算符),并明确地对scoped_ptr指向的内容进行深度复制。如果智能指针类型具有自己执行此操作的复制构造函数,那将会很棒。
在c ++ boost / stl库中是否有类似的智能指针已经内置了深层复制功能,因此当复制智能指针时,它指向的对象也会被复制?至少作为一种选择?
(如果有这样的指针,在我的情况下,指针必须更多地了解它应该如何创建新对象,因为我的对象指向的是多态类,具有虚拟Clone()函数。智能指针无法隐式弄清楚如何深度复制,客户端代码可能提供了一个函数指针或指向Clone函数的东西或者应该使用的工厂创建函数。我猜这个新对象如何复杂化创建可能是为什么没有指针具有深拷贝功能的原因之一...?)
答案 0 :(得分:3)
据我所知,标准库中没有智能指针可以实现你想要的语义。
但是,MNMLSTC core库提供了两个适合您的用例的智能指针(即core::poly_ptr
和core::deep_ptr
)。特别是,由于存在虚拟成员函数,我相信core::poly_ptr
就是您所需要的。