为什么要在两级以上的继承层次中声明一个函数为非虚函数?有人可以给我举个例子吗?
我知道区别是什么以及会发生什么,但我无法真正理解为什么以及何时要这样做。
最佳答案
从语义的角度来看:使其不能被覆盖。
从实际的角度来看:如果没有虚函数,那么就不需要vptr,所以每个实例占用的内存会稍微少一些。此外,正如@Billy 在评论中所说,这意味着不会间接调用成员函数。
关于C++ 虚拟与否?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8387776/