1

在模式中制作虚拟delegate好不好?destuctor

class MyClass
{
    ...
};

class MyClassDelegate
{
    ...
};

一方面,类MyClassDelegate是一个接口,应该继承自,但另一方面,它不应该delete通过指针subclassMyClassDelegate

你怎么看 ?

4

3 回答 3

5

您可以考虑使其成为非虚拟的受保护对象——然后您实际上是在强制执行并记录您无法使用这种指针删除对象的事实。可以在这里找到更多讨论

于 2012-08-01T07:52:15.430 回答
0

如果您已经拥有其他虚函数,则将析构函数设为虚函数几乎不会带来任何开销。

于 2012-08-01T07:46:26.463 回答
0

如果您打算让类继承自MyClassDelegate,最好给它一个虚拟析构函数。

在您的初始设计中,您可能不打算指向delete任何指向 的指针MyClassDelegate,但此设计会不断发展,您的选择将限制其发展方式。这个特殊的约束很容易被忘记,并且导致的崩溃(或细微的错误)可能需要一段时间才能诊断出来。

于 2012-08-01T08:06:48.657 回答