我发现了这个类定义(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/