我对大多数OO理论有了深刻的理解,但让我困惑的一件事是虚拟析构函数.
我认为无论什么以及链中的每个对象,析构函数总是会被调用.
你什么时候打算让它们成为虚拟的?为什么?
我只使用C++工作了2~3个月,最近我发现了一个虚函数之后的标识符final.直到今天,我相信虚拟的遗漏将阻止虚拟的传播,但我错了.它含蓄地传播.
我的问题是这个.为什么允许隐式传播?为什么虚拟的存在不能虚拟化而虚拟虚拟使功能不虚拟?在某些情况下是更好的吗?还是它,回到虚拟首次推出的那一天?
据克利福德的答案,甚至有是在由于缺少的警告产生一个编译器的虚拟.
我期望上面的链接回答我的问题,但事实并非如此.
------------加法-------------
有关于询问此功能是否有用的评论.我认为虚函数的最终关键字是使函数虚拟化的东西.该函数不能再被覆盖,因此派生类必须重新声明一个函数,无论它是否具有相同的名称.如果final与devirtualization不同,请帮助我理解它.如果最终没有区别,那么从最终引入的事实来看,虚拟化的有用性是不言而喻的.我同意强制显式虚拟会产生错误,但我很好奇是否有其他原因.