我发现了这个类定义(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() {}
};

我想知道它是否设计合理。
当我写一个类时,我倾向于避免委派破坏,因为我
不知道是否要修改委托(delegate)类(在这种情况下为Bar)
由不知道passResponsabilityToBarDestructor必须调用的事实的人aBar的成员函数将指针myObj保存在某处并删除它
myObj被销毁时。

我想知道:
  • (如果此类设计合理)
  • 如果我的设计努力(当我无法使用智能指针时,我会头痛不已
    在破坏类的同一个类中编写类破坏事物是浪费时间。
  • 最佳答案

    在许多情况下,销毁破坏实际上是有帮助的。我遇到过代码-销毁成本很高,因此设计人员不想在调用流程中销毁该对象-而是将其委托(delegate)给另一个线程级别并在后台将其删除(理想情况是在系统不繁忙时) )。在这种情况下,垃圾回收器(在另一个线程中)会破坏对象。

    有时也用于快速切换数据(用于数据刷新的情况)并轻松删除旧数据。我认为这与Java的gc中的概念类似。

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

    关于c++ - 委托(delegate)销毁对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18331339/

    10-11 22:58
    查看更多