可能给例子比较好理解的说~~
这样运行会输出“A”。
----------------------------------------------------------------------------------
这样会输出“B”。
--------------------------------------------------------------------------
补充:上面两个因为是图我就不改了~
@vczh 轮子哥教导我们A的析构函数也要加virtual,否则delete p的时候调的是A的析构函数可能会有问题~~
--------------------------------------------------------------------------
简单说就是
当基类指针指向一个子类对象,通过这个指针调用子类和基类同名成员函数的时候,基类声明为虚函数「子类不写也可以」就会调子类的这个函数,不声明就会调用基类的。自己体会一下0.0
--------------------------------------------------------------------------
需要用的情形的话大概是这样:
比如你有个游戏,游戏里有个虚基类叫「怪物」,有纯虚函数 「攻击」。然后派生出了三个子类「狼」「蜘蛛」「蟒蛇」,都实现了自己不同的「攻击」函数,比如狼是咬人,蜘蛛是吐丝,蟒蛇把你缠起来~~
然后出现好多怪物的时候就可以定义一个
虚基类指针数组,把各种怪物的指针给它,然后迭代循环的时候直接 monster[i]->attack() 攻击玩家就行了,大概见下图:
如果没有虚函数的话,管理一堆差不多但是类型又不一样的对象的时候就比较麻烦了。
---------------------------------------------------------------
大一水平求指导~~不知道说的对不对~~还有代码格式,变量命名神马的都求指导~0.0~
@vczh
对了还有个问题~~今天听说MFC框架设计的不太好……那我还要不要学捏?如果不学的话要学什么来代替捏0.0~?