(1)虚函数的用法
用于子类重写父类函数
//父类
class base
{
...
};
//子类
class sub:public base
{
...
};
//主函数
main()
{ //指针p的指向静态绑定为base,想要解除静态绑定,需要把base中的函数用virtual修饰
base* p = new sub(); //指针类型是base,指针引用是sub
}
若子类重写父类函数,则在类中,对于virtual函数:
p->fun();调用的是指针引用的类
对于非virtual函数:
p->fun();调用的是指针类型的类
重写不同于重载,重写要求函数特征完全相同
(2)虚继承
用于解决钻石继承
第一层
class base
{
...
};
第二层
class base1:virtual public base
{
...
};
class base2:virtual public base
{
...
};
第三层
class sub:public base1,public base2
{
...
};
若不用虚继承,base中的内容会被sub继承两次
使用虚继承就是为了解决这个问题
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)