CB *_*ley 10
这是一个实现细节,但没有.如果实现将指向非虚函数的指针放入vtable中,则它不能使用这些指针进行函数调用,因为它通常会导致调用不正确的非虚函数.
当调用非虚函数时,实现必须使用调用函数的对象的静态类型来确定要调用的正确函数.存储在由vptr访问的vtable中的函数将取决于对象的动态类型,而不是依赖于它的任何静态类型的引用或指针.
不,事实并非如此。
由于对非虚方法的调用可以在编译期间解析(因为编译器知道非虚函数的地址),因此编译器生成指令来“直接”(即静态地)调用它们。
对于编译过程中已知的方法,没有理由经历 vtable 间接机制。
| 归档时间: |
|
| 查看次数: |
2813 次 |
| 最近记录: |