在C++中有没有什么方法可以声明虚方法是不可重写的,就像Java语言中的最终方法一样。
我知道通过将类的默认构造函数设为私有,我可以让类变成final类,但是如果只使用虚方法呢?
谢谢
发布于 2015-11-20 04:23:17
如果你像这样声明你的方法是虚的:
virtual myMethod();
然后它们就可以被覆盖了。删除虚拟的,使它们“不可重写”
由于C++11,你也可以像这样使用虚拟的最终:
virtual myMethod() final;
Final keyword
发布于 2015-11-20 04:27:29
从C++ 11开始,还有一个可以在类和方法上使用的最终关键字。
据我所知,以前的版本不可能做到这一点。
请参阅https://en.wikipedia.org/wiki/C%2B%2B11#Explicit_overrides_and_final
发布于 2015-11-20 04:46:52
尽管C++11和更高版本允许将方法声明为final
,但我敢说这不是一件好事。不要封锁你的班级!它的用户可能会有创造性的场景,他们可能需要对其进行一些调整。为什么要剥夺他们的这种选择呢?
如果你研究标准库的实现(就效率和风格而言,这是真正好的编程的最佳来源之一),你会发现成员永远不会是最终的,类本身也不会。
https://stackoverflow.com/questions/33813612
复制相似问题