委托对象销毁

Delegating object destruction

本文关键字:对象      更新时间:2023-10-16

我发现了这个类定义(T必须从TBase派生),passResponsabilityToBarDestructor不是功能,可悲的是。

template<typename T> 
class Foo
{
public:
   Foo(const std::string& aName, Bar& aBar)
   {
      const TBase* myObj = static_cast<const TBase*>(new T);
      NiceNameSpace::passResponsabilityToBarDestructor(aName, myObj, aBar);
   }
   virtual ~Foo() {}
};

我想知道它是否设计得很好。当我写一个类时,我倾向于避免委派破坏,因为我不知道是否要修改委托类(在本例中为Bar)有人不知道passResponsabilityToBarDestructor必须打电话CCD_ 5的成员函数将指针CCD_当CCD_ 7被破坏时。

我想知道:

  1. 如果这个类设计得好
  2. 如果我的设计努力(当我不能使用智能指针时,我会头疼写类破坏在同一个类中构建它的东西)是浪费时间

销毁授权在许多情况下确实有帮助。我遇到过这样的代码——破坏成本很高,所以设计人员不想在调用流中破坏对象——而是将其委托给另一个线程级别,并在后台删除它(最好是在系统不忙的时候)。在这种情况下,垃圾收集器(在另一个线程中)会销毁对象。

这有时也用于快速切换数据(在数据刷新的情况下)和轻松删除旧数据。我认为这是一个类似于Java的gc的概念。

关于这个特定的设计是否有效/有用,如果你添加整体概念,可能会帮助我们添加一些建议。实际上,我已经对你问题的第二部分给出了一些提示。啊!