如果一个类没有子类,并且总是直接使用,是否有任何理由声明方法virtual
?
例如:
class Foo {
public:
virtual void DoBar {
// Do something here.
}
}
我在阅读的一些代码中遇到过这个问题,并且无法找到任何理由。
谢谢!
答案 0 :(得分:1)
virtual
关键字的本质与继承直接相关。这是CPP Ref的摘录: -
虚拟成员虚拟成员是可以成为的成员函数 在派生类中重新定义,同时保留其调用属性 通过参考。函数变为虚拟的语法是 在声明之前使用虚拟关键字
所以恕我直言 - 对你的问题的回答是否定的 - 这没有任何意义 - 除非代码从最初的实现发生了变化 - 相信我发生了很多事情!
答案 1 :(得分:1)
在编写库代码时,有用的是让未来的程序员记住谁可能想要扩展类并提供自己的行为。例如,在GUI库中具有虚拟 'save all queries into string array, maximum 1000
qryUpdateArray(iRecCount) = sUpdQry
qryInsertArray(iRecCount) = sInsQry
qryExistArray(iRecCount) = sExistQry
函数或虚拟鼠标处理函数是很常见的。它们提供默认实现,但它们允许扩展的可能性。
答案 2 :(得分:1)
如果那个班级是从那时得出的,那么它是有意义的。在决定程序的体系结构时,应该做出这些决定,并定义可以使用接口完成的任务。如果他们不希望从那里得到它,那么它不应该是虚拟的。如果他们确实希望从那时派生它,那么它应该是虚拟的(并且它也应该使析构函数成为虚拟的)。