为什么我们甚至需要VPTR?

GMa*_*Man 1 c++ vptr

为什么我们不对非虚函数使用相同的方法?

我的意思是,为什么我们以这种方式使用虚函数?我们不能只将它们用作非虚拟的并覆盖它们吗?

如果这种方法节省了我们的时间/空间或者什么,我们为什么不对非虚函数使用相同的方法呢?我的意思是,对于特定的类,将有一个函数表是有意义的.

无论如何,提前谢谢,我只是有点困惑.

Fre*_*son 6

如果不使用间接级别,则不能具有运行时多态性.这就是vptr的用途.

vptr不用于非多态函数,因为间接成本有所欠缺.C++哲学是你不为你不使用的东西买单.

编辑:

以下是有关虚拟表如何工作的一些信息:http://en.wikipedia.org/wiki/Virtual_table

  • @GMan:来自C++ origianl设计文档:http://www2.research.att.com/~bs/rules.pdf <quote>即零开销原则:"你不使用什么,你不要"付钱"</ quote> (2认同)