我正在关注本教程,试图了解和背后的virtual table
整个过程。pointer
virtual functions in C++
不确定,当我有这样的代码时:
D1 d1;
Base *dPtr = &d1;
dPtr->function1();
为什么我需要所有这些virtual table
管理?为什么编译器根本不分配d1
(或基,如果没有的话)的内存地址覆盖virtual function
?
我的意思是:如果它需要 D1functon1()
地址或Base functon1()
地址,它可以在编译时详细说明。当时就知道了。为什么稍后在运行时浪费时间和资源virtual tables
?
我错过了这一点。花哨的例子?