面向对象.....

解释一下虚函数,虚继承内部怎么实现的

简而言之,虚函数就是用基类类型的指针指向子类对象的实例,通过基类指针调用子类的成员函数。每个含有虚函数的类中都有一个虚函数表和指向虚函数表的虚函数指针,虚函数表中存放了类中各个虚函数的入口地址。

虚继承:

从不同途径继承的同一基类,会在子类中存在多份拷贝。即浪费资源又会存在二义性。

虚继承通过虚基类指针和虚基类表实现,每个虚继承的子类都有一个虚基类指针和虚基类表。当虚继承的子类被当做父类,虚基类的指针也会被继承。虚基类指针指向虚基类表,虚基类表中记录了虚基类与本类的偏移地址,通过这种方式找到虚基类成员。这样就不会导致像普通多重继承那样存在多份拷贝,节省了内存空间。

多态:一个接口,多种方法。多态分为静态多态和动态多态。静态多态主要是重载,在程序编译的时候就已经确定了调用哪个函数。动态多态是用虚函数机制实现的,在运行期间才确定调用哪个函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值