![]() |
1
9
我想这是为了方便实现者。它允许他们定义扩展的
不管是不是
否则,允许第一个动态转换(并计算为空指针),而不允许第二个动态转换。所以,如果
在我看来,将虚拟析构函数放入标准中比以下两种方法都简单:
a) 请注意,尽管类定义暗示
b) 确定可以区分
不过,如果被禁止,那么一个实现可以:
这将解决我在文章顶部描述的情况,
但是
总之,据我所知,虚拟析构函数对实现者是潜在的有用的,除去它不会给任何人带来任何好处,除非我们不会花时间去想它为什么会存在;-)
|
![]() |
2
9
C++标准说
第5.2.8节的当前C++标准的第1条:
这反过来意味着,一个人可以写以下代码是合法的和罚款的:
|
![]() |
3
2
因此,问题不在于“嗯,为什么会有一个虚拟的析构函数”,而在于,正如我所见,“嗯,为什么设计如此落后,笨拙,不能直接使用”?我把这归结为标准化过程。例如,iostreams也不完全是优秀设计的例子;不是可以模仿的东西。 |
![]() |
4
2
聪明的。。。
|