第六周学习

6.1虚函数和多态

虚函数

  1. 在类的定义中,前面有virtual关键字的成员函数就是虚函数
class base{
    virtural int get(){}
};
  1. virtural 关键字只用再类定义里的函数申明中,写函数体时不用
  2. 构造函数和静态成员函数不能是虚函数,析构函数可以是虚函数

多态

  1. 派生类的指针可以赋值给基类指针
  2. 通过基类指针调用基类和派生类中的同名虚函数的时候:
    若指针指向的是一个基类的对象,则调用的是基类的虚函数
    若指针指向的是一个派生类的对象,则调用的是派生类的虚函数
    这种行为叫做 【多态】
  3. 派生类的对象可以赋值给基类引用
  4. 通过基类引用调用基类和派生类的同名虚函数的时候:
    若该引用引用的是一个基类的对象,那么被调用的是基类的虚函数
    若该引用引用的是一个派生类的对象,那么调用的是派生类的虚函数
    这种行为也叫【多态】
class base
{
public:
    virtual void some(){}    
};
class derived:public base{
    virtual void some(){}
}
int main(){
    derived a;
    base b;
    base* p1=&a;
    base* p2=&b;
    base& r1=a;
    base& r2=b;
    p1->some();//调用derived类下的some()函数
    p2->some();//调用base类下的some()函数
    r1.some();//调用derived类下的some()函数
    r2.some();//调用base类下的some()函数
    return 0;
}

e.g:

Created with Raphaël 2.1.0 A A B B D D E E 派生 派生 派生
A a;B b;E e;D d;
A* pa=&a; B* pb=&b;
D* pd=&d; E* pe=&e;
pa->print();//调用类A的print()
pa=pb;
pa->print();//调用类B的print()
pa=pd;
pa->print();//调用类D的print()
pa=pe;
pa->print();//调用类E的print()

6.2多态在游戏程序中应用的实例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值