c/c++高手帮忙!!!c++中的virtual函数究竟是怎么实现的,用 C 语言表达出来,代码请加注释。

来源:百度知道 编辑:UC知道 时间:2024/05/30 09:35:13
C语言实现多态:用一个基类的指针指向这个地址,再调用基类中声明了的在派生类中重写的方法,得到的是派生类调用该方法的结果对么?用代码说明一下请加注释,谢谢。
请用C语言实现像c++中多态能达到的效果,请举c语言例子说明(加注释)谢谢

你的说法不对!多动态是C++在语法层次上提供的方便,实际上最终转换成汇编时就不存在什么对象、重载、虚函数这些高级概念了。你的问题已经涉及底层实现机制,所以想问题的思路就不能再停留在这种高度抽象的高层次之上了!建议你去熟读《C++深层探索》。
简单来说凡含非虚函数的类对象(占用内存空间的实体)都含有一个指针指向虚表,虚表其实就是一个函数指针的数组,不同类型的子类用各自的成员函数去充填它,但你通过基类调用虚函数时其实是按偏移调用虚表中某个特定位置的函数,多了一个中间层所以效率上要打折扣。

我怀疑LZ是因为老师让做C语言的课程设计,但LZ在网上只找到了C++的实现代码,想偷懒直接换成C语言的