虚函数表博文总结

来源:互联网 发布:备案域名出售 编辑:程序博客网 时间:2024/06/05 19:28

对虚函数实现方式的理解:
1.每个有虚函数的类都有虚函数表,记录了继承的虚函数、自己重载的虚函数的地址。
2.多重继承时,有多个虚函数表,每继承一个父类产生一个虚函数表。
3.构造函数构造对象时,在对象所在内存的首地址放置虚函数表的地址;如果这个类有多个虚函数表就放置多个虚函数表的地址。
4.虚函数表是在编译时生成的。如果某个类,在程序中就没有被使用,也就是没有实例化类,那么这个类的虚表就不会产生。虚表里的指针值是在程序加载时确定的。
5.程序运行时,从对象的开始地址获取虚函数表的地址,然后再从虚函数表获取函数的地址。这些信息在编译时就可以获取。


从下面三个非常棒的博文可以更好的理解虚函数的实现方式。

http://blog.endlesscode.com/2010/03/03/cpp-virtual-table/
http://blog.csdn.net/linyt/article/details/6336762
http://blog.csdn.net/zhanglei8893/article/details/6333751


原创粉丝点击