![]() |
1
5
默认情况下,所有D成员函数都是虚拟的。我不认为有任何编译器可以将函数作为优化而非虚拟化。但是,您可以通过将类或函数标记为“final”来手动执行。 |
![]() |
2
2
除了不能虚拟化的模板化功能外,feepingCreative基本上是正确的。 |
![]() |
3
2
如何实现这一点是编译器和链接器特有的。但是,一个可以优化虚拟函数调用的常见情况是,在本地实例化了一个类。然后可以在这个范围内直接执行函数调用,因为类的类型在编译时是完全已知的。这可以在编译器级别上完成。 此外,如果链接器意识到函数实现永远不会被重写,那么链接器可能会进行优化,并用该类上的直接函数调用替换虚拟函数调用。特别是,如果从未派生类,则可以直接执行对成员函数的所有调用。就好像链接器会尽可能插入“final”关键字。(链接器可能不会将此优化应用于导出的类和函数,因为链接器不知道函数是否在其他库或可执行文件中被重写。) |
![]() |
4
1
我相信feepingcreature是正确的,但另外,我认为您可以假定,只有编译器直接从源代码创建可执行文件时,才会考虑这样的优化。 |
![]() |
Divyat · D语言的BNF语法形式[闭口] 7 年前 |
![]() |
hiropon · 有没有办法用Dlang同时分配多个变量? 7 年前 |
![]() |
Jonathan Wilbur · 从D中的抽象类运行单元测试? 7 年前 |
![]() |
thinwybk · 如何使用D访问linux字符设备? 7 年前 |
![]() |
user3069488 · 震波。D-未定义标识符(Dlang) 7 年前 |
![]() |
Dmitry Bubnenkov · 错误:实例化模板实例时出错 7 年前 |
![]() |
Matt Smith · 正在转义对局部变量的引用 9 年前 |
![]() |
StillLearningToCode · 将字符串解析为D中的标记 10 年前 |
![]() |
Suliman · D?的TUI(文本用户界面)? 10 年前 |