第六周学习

来源:互联网 发布:java的语句类型 编辑:程序博客网 时间:2024/06/06 12:35

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.0AABBDDEE派生派生派生
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多态在游戏程序中应用的实例

原创粉丝点击