虚函数表是一个存在指向虚函数的指针数组,每一个带有虚函数的类都有一个虚函数表。虚函数表与虚函数一样是可以继承。这个表的每一个数组的值都是指向虚函数的指针。
1、一个类继承另外一个带有虚函数的类,并且没有重写和增加虚函数。这个类的虚函数表就和父类一样。
3、派生类新增了虚函数,则就在虚函数表的末尾增加。
虚函数表可以支持动态动态,允许基类的指针或引用调用派生类的函数。
例子:
class Base{
public:
virtual void test() { std::cout << "Base::virtual function" << std::endl; }
};
class Derived : public Base {
public:
void test() override { std::cout << "Derived::virtual function" << std::endl; }
public:
void testAdd() { std::cout << "Derived::testAdd()" << std::endl; }
virtual void testAddVi() { std::cout << "Derived::testAddVi()" << std::endl; }
};
int main()
{
Base* obj = new Derived();
obj->test(); //
//只能调用基类继承下来的函数
//obj->testAdd();//不能调用派生类增加的其它函数
//obj->testAddVi();//同样不能调用派生类新加的虚函数
//定义派生类重新指向
Derived* de= dynamic_cast<Derived*>(obj);
de->testAdd();
de->testAddVi();
delete obj;
getchar();
return 0;
}
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- stra.cn 版权所有 赣ICP备2024042791号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务