人小鬼不大

导航

 

  使用一个指向虚函数表的指针

  派生类与基类共用一个指向虚函数表的指针,如果虚函数没有被重新定义,则此虚函数地址不变,如果改变或添加新的虚函数,将保存为一个新的地址!!

  无论虚函数有多少个,类与实例对象都只保存一个vtbl,只是指向的虚函数表的大小不同而已!!

  可见使用虚函数,将增加以下时间和空间成本:(1)每个对象额外增加一个vtbl内存;(2).每个类将创建一个虚拟地址表数组;(3)每次函数调用,需要查找地址  

  注意几点:构造函数不能为虚,析构函数必须为虚!否则只会释放基类的new部分内存,造成内存泄漏;友元函数不能为虚函数! 

 

posted on 2019-12-29 12:17  人小鬼不大  阅读(94)  评论(0)    收藏  举报