c# – 虚拟和覆盖在场景后面做了什么

栏目: C# · 发布时间: 5年前

内容简介:我刚刚了解Virtual和Override用于(我找不到这么长时间使用).我不能给你任何关于如何在IL中完成的见解,但基本理论很简单.当编译器看到虚拟方法声明时,不是将该方法附加到类中,而是将其添加到该类的vtable(虚方法表)中,该类保存指向函数的指针.

我刚刚了解Virtual和Override用于(我找不到这么长时间使用).

我不能给你任何关于如何在IL中完成的见解,但基本理论很简单.

当编译器看到虚拟方法声明时,不是将该方法附加到类中,而是将其添加到该类的vtable(虚方法表)中,该类保存指向函数的指针.

现在由于vtable是类的一部分,它由子类继承,因此虚拟方法也是继承的.现在是覆盖位.当编译器在方法声明中看到覆盖时,它会查找vtable,找到要覆盖的方法并更改函数指针,使其指向新的定义.

因此,您既可以从父类继承方法,也可以在子类中更改它们的定义.

有关更多信息,请参阅 Virtual Method Table 上的Wikipedia文章.

翻译自:https://stackoverflow.com/questions/1310312/what-does-virtual-and-override-do-behind-the-scene


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

知识的边界

知识的边界

[美] 戴维·温伯格 / 胡泳、高美 / 山西人民出版社 / 2014-12-1 / 42.00元

大数据时代反思知识 因为事实不再是事实,专家随处可见 所有确定性都被连根拔起,话题再无边界,没有人对任何事情能达成一致。 在互联网的引领下,知识现在已经具有了社交性,流动且开放。温伯格向我们展示了这些特点如何可以为我们所用。 ——马克•贝尼奥夫(云计算之父,著有《云攻略》) 这本富有洞见的著作,奠定了温伯格作为数字时代最重要的思想家之一的地位。如果你想要理解信息洪流涌......一起来看看 《知识的边界》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试