虚函数表和虚函数表指针

原文链接: http://www.cnblogs.com/smallredness/p/11022155.html
/*
(非继承的类)
如果一个类中有虚函数,则该类就有一个虚函数表。虚函数表是属于类的,不属于类对象。在编译的时候确定,存放在只读数据段。
每一个实例化的类对象都有一个虚函数表指针,指向类的虚函数表。虚函数表指针属于类对象。存放在堆上或者栈上。
(继承的类)
如果基类中有虚函数,派生类实现或没实现,都有虚函数表。基类的虚函数表和派生类的虚函数表不是同一个表。
如果派生类没有重写基类的虚函数,则派生类的虚函数表和基类的虚函数表的内容是一样的。
如果派生类重写了基类的虚函数,则在派生类的虚函数表中用的是派生类的函数。
*/

/*
(多继承)
含有虚函数的基类有多少个,派生类就有多少个虚函数表指针,派生类有就有多少个虚函数表。
派生类有的而基类没有的虚函数,添加在第一个虚函数表中。
虚函数表的结果是* 表示还有下一个虚函数表
虚函数表的结果是0 表示是最后一个虚函数表
*/

转载于:https://www.cnblogs.com/smallredness/p/11022155.html

猜你喜欢

转载自blog.csdn.net/weixin_30414245/article/details/94942756